在我的索引中,我有 40 行数据如下:
| -name- | -surname- | -bdate string- | -creation date- |
| leva | agabalyan | 19560901 | 2013-09-21T11:19:13.968Z |
| leva | agabalyan | 19560901 | 2012-03-14T11:16:47.665Z |
| leva | agabalyan | 19560901 | 2012-02-19T11:38:47.972Z |
| leva | agabalyan | 19560901 | 2011-08-22T11:49:57.995Z |
.....
所有这些行都具有相同的姓名、姓氏和出生日期字符串字段。唯一的区别是创建日期。在实际应用程序中,字段/列明显更多(大约 30 个),但您会看到它们不参与查询。此外,在搜索查询的时间范围之外,我还有更多这样的行。所以我想这些也不应该有所作为。
我也有这样的单行:
| -name- | -surname- | -bdate string- | -creation date- |
| lyova | aghabalyan | 19560901 | 2013-06-27T11:19:33.345Z |
如您所见,与第一个表的区别在于姓名和姓氏字段。名称相差 2 个符号,姓氏相差 1。
对于搜索,我使用此查询:
{
“询问”:{
“布尔”:{
“必须”:[{
“模糊”:{
“注册名称”:{
“价值”:“lyova”,
“最小相似度”:“0.45”
}}
},
{“模糊”:{
“注册.姓氏”:{
“价值”:“aghabalyan”,
“最小相似度”:“0.65”
}}
},
{“学期”:{
"registration.birthDateStr":"19560601"
}},
{“范围”:{
“注册。创建”:{
“来自”:“2011-01-01”,
“到”:“2014-01-01”
}
}}
],
“一定不”:[],
“应该”:[]}
},
“从”:0,
“尺寸”:50,
“种类”:[],
“方面”:{}
}
此搜索查询返回包含 的 1 行和包含 的lyova14 行leva。我不明白为什么它不返回其中包含的剩余 26 行leva。总命中数也是 15,而显然应该是 41。在我看来,我在这里遇到了一个弹性搜索错误。