为什么它只匹配一个单词的一部分而不匹配整个单词



我有一个带有name属性的文档索引。我的目标文档具有以下值:"name" : "Eiker Football Team Crows"。有相当多的";Eiker";因为这是一个地区。搜索Football Team可以找到此文档,eik football team甚至eike也可以找到(尽管它也可以找到其他文档(。真正奇怪的是,Eiker没有发现任何带有该词的文档,但确实建议使用EkerEikeland等排列。字面上搜索完整的正确拼写和大小写的名称作为我正在寻找的文件,没有找到它。

这是我试图做的搜索写在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"
}
}
}
]
}
}
}

最新更新