我正在寻找一种方法,通过匹配从elasticsearch准确的整个词的结果。这是用于ui中的“eq”(“=”)操作。
{
"_index": "docs",
"_type": "_doc",
"_id": "1",
"_score": 1.0,
"_source": {
"DocId": 1,
"DocDate": "2020-07-24T10:16:44.0000000Z",
"Conversation": "I just need to know how frequently I should remind you"
}
},
{
"_index": "docs",
"_type": "_doc",
"_id": "2",
"_score": 1.0,
"_source": {
"DocId": 2,
"DocDate": "2020-07-25T10:16:45.0000000Z",
"Conversation": "Building a work culture in your firm"
}
}
在这里,当用“我只需要知道我应该多久提醒你一次”来查询会话时,只有es应该返回docid 1数据。即使查询像“我只需要知道我应该多久提醒一次”,那么它应该返回空的。
我尝试了这些es查询,但没有找到答案。
GET docs/_search
{
"query": {
"bool": {
"must": [
{"match_phrase": {
"Conversation": "just need to know"
}}
]
}
}
}
GET docs/_search
{
"query": {
"query_string": {
"default_field": "Conversation",
"query": "\"just need to know\""
}
}
}
GET docs/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"Conversation": {"query": "just need to know",
"operator": "and"
}
}
}
]
}
}
}
1条答案
按热度按时间1szpjjfi1#
你需要加上
.keyword
到Conversation
现场。这将使用关键字分析器而不是标准分析器(注意在Conversation
字段)。使用标准分析仪时
生成以下令牌:
而关键字分析器将整个输入字符串作为单个标记返回。如果尚未定义任何显式Map,则修改的搜索查询将是:
您甚至可以通过以下方式更改索引Map: