我在尝试进行简单查询时遇到问题,请查看以下数据:
拥有这些数据:
POST test/_doc/1
{
"id": 1,
"title": "Test Name"
}
POST test/_doc/2
{
"id": 2,
"title": "TestName"
}
字符串
这个查询:
GET test/_search
{
"query": {
"match": {
"title": {
"query": "TestName",
"fuzziness": "AUTO"
}
}
}
}
型
使用此输出:
{
...
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 1.605183,
"hits": [
{
"_index": "test",
"_id": "2",
"_score": 1.605183,
"_source": {
"id": 2,
"title": "TestName"
}
}
]
}
}
型
为什么输出不返回两条记录?
我该怎么补救?
2条答案
按热度按时间js5cn81o1#
Tldr;
Fizziness在elasticsearch中有限制。限制是Levenshtien距离,最大设置为2。
这意味着您将无法匹配任何超过2个编辑的内容。
去理解
字符串
应该给你给予
型
修复
你可能想看看analyser capabilities。
例如,如果你使用ngram,你可以让它工作。
yvt65v4c2#
如果您使用的是默认的elasticsearch
analyzer
,则Test Name
值将被拆分并单独存储到inverted index
中,这意味着当您使用TestName
值进行搜索时,elasticsearch检查TestName
是否匹配fuzzyTest
级别,或者匹配Name
而不是短语Test Name
,这就是为什么您无法获得第一个文档