我对弹性搜索模糊查询有一些奇怪的行为,我不知道自己做错了什么。
这些是我的索引中的名字:
"hits": [
{
"name": "bbbb"
"name": "abab"
"name": "abbb"
"name": "aaaa"
}
}
]
但是这个假设要返回所有四个元素的查询只返回" abab"和" aaaa"。
POST /test/_search?pretty
{
"size": 10,
"query": {
"fuzzy": {
"name": {
"value": "aaaa",
"fuzziness": 4
}
}
}
}
名称字段被映射为字符串类型。作为一个附带问题,将not_analyzed映射设置为字段会影响模糊查询结果吗?
答案 0 :(得分:2)
基于Elasticsearch's Common Options - Fuzziness documentation末尾引用的Fuzzy Query documentation,对于字符串字段,模糊参数似乎只采用以下值之一:0,1,2,AUTO,0.0 ... 0.1。该部分的最后一部分作为注释:
注意:在除此类查询之外的所有API中,允许的最大编辑距离为2。
正如您所观察到的,除此之外的所有内容似乎都被限制在2的编辑距离。这对于Elasticsearch的更高版本来说都是如此,因为0.90的文档有点不同。