我的 map 中有日期字段,我想对字段进行模糊搜索
下面是我的代码
GET _search
{
"query": {
"fuzzy": {
"death_date": {
"value": "3548"
}
}
}
}
当前结果未按预期返回数据。
尽管我有3548的值,但是它的分数小于显示在结果顶部的3549的值
我已将查询更改为包含建议的范围参数
GET _search
{
"query" : {
"bool": {
"must":
{
"match": {
"marriages.marriage_year": "1630"
}
},
"should":
{
"match": {
"first_name":
{ "query" : "mary",
"fuzziness":"2"
}
}
},
"must":
{
"range" : {
"marriages.marriage_year": {
"gt" : "1620",
"lte" : "1740"
}
}
}
}
}
}
它将返回的数据为weddings.marriage_year =“1630”,其中以玛丽为第一名是最高分。我还希望包括1620年至1740年之间的未婚夫妇。它仅显示marraige_year 1630的数据
最佳答案
模糊查询旨在处理字符串字段以适应键入错误。它根据编辑距离为您提供结果。在数字字段上使用它没有任何意义。由于1000、9000仅具有距离1,但它们相距较远。您可以按照Russ的建议进行范围查询,或者如果您对编辑距离而不是范围感到困扰,则将其索引为字符串字段,然后进行模糊查询。