我有一个带有name属性的文档索引。我的目标文档具有以下值:"name" : "Eiker Football Team Crows"
。有相当多的";Eiker";因为这是一个地区。搜索Football Team
可以找到此文档,eik football team
甚至eike
也可以找到(尽管它也可以找到其他文档(。真正奇怪的是,Eiker
没有发现任何带有该词的文档,但确实建议使用Eker
或Eikeland
等排列。字面上搜索完整的正确拼写和大小写的名称作为我正在寻找的文件,没有找到它。
这是我试图做的搜索写在Kibana开发者:
GET orgs/_search
{
"query": {
"match": {
"name": {
"query": "eiker",
"operator": "and",
"fuzziness": "auto",
"max_expansions": 5,
"prefix_length": 0
}
}
}
}
为什么我的Elastic搜索讨厌r
?
我尝试过不同的扩展名或前缀值。或者用or
代替and
运算符。
问题的简单答案是您使用的是fuzziness
,因此它也会进行模糊匹配。请检查此文档。
模糊性允许基于字段类型的模糊匹配询问。
此外,Elasticsearch仅在默认情况下返回前10名的结果。若要获得更多结果,请将size
参数值设置为大数字。
更新:
根据您的评论,您使用autocomplete
作为索引时间分析器,使用autocomplete_search
作为搜索时间分析器,所以这就是为什么没有结果的原因。使用在name
字段的索引时使用的相同分析器尝试以下查询,它应该会返回结果。(请添加您有问题的索引映射和分析器设置,以便轻松回答问题(
POST sampleindex/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"name": {
"query": "Eiker",
"operator": "and",
"fuzziness": "auto",
"max_expansions": 5,
"prefix_length": 0,
"analyzer": "autocomplete"
}
}
}
]
}
}
}