【发布时间】:2020-10-03 15:12:35
【问题描述】:
我有一个索引,其中一些条目类似于
{
"name" : " Stefan Drumm"
}
...
{
"name" : "Dr. med. Elisabeth Bauer"
}
name字段的映射是
{
"name": {
"type": "text",
"analyzer": "index_name_analyzer",
"search_analyzer": "search_cross_fields_analyzer"
}
}
当我使用以下查询时
GET my_index/_search
{"size":10,"query":
{"bool":
{"must":
[{"match":{"name":{"query":"Stefan Drumm","operator":"AND"}}}]
,"boost":1.0}},
"min_score":0.0}
它返回第一个文档。
但是当我尝试使用下面的查询获取第二个文档时
GET my_index/_search
{"size":10,"query":
{"bool":
{"must":
[{"match":{"name":{"query":"Dr. med. Elisabeth Bauer","operator":"AND"}}}]
,"boost":1.0}},
"min_score":0.0}
它没有返回任何东西。
我不能做的事
- 无法更改索引
- 无法使用术语查询。
- 将运算符更改为“OR”,因为在这种情况下它将返回多个条目,这是我不想要的。
我做错了什么以及如何通过修改查询来实现这一点?
【问题讨论】:
-
你能显示
name字段的映射吗? -
"name": { "type": "text", "analyzer": "index_name_analyzer", "search_analyzer": "search_cross_fields_analyzer" }
-
如果你有一个
keyword子字段,它会很容易使用,因为你似乎在做完全匹配。但是,如果您无法更改映射并且不想使用术语查询,我不确定您如何继续,就像说,我的轮胎瘪了,我想继续快速行驶但我不不想改变它... -
我明白你的意思。但是既然分析器已经到位,那么使用术语查询没有意义吧?
-
这无关。您似乎在进行精确搜索,那么分析器的意义何在?他们是做什么的?
标签: elasticsearch