在我的索引中,我有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。
为了搜索我使用此查询:
{ "query":{ "bool":{ "must":[{ "fuzzy":{ "registration.name":{ "value":"lyova", "min_similarity":"0.45" }} }, {"fuzzy":{ "registration.surname":{ "value":"aghabalyan", "min_similarity":"0.65" }} }, {"term":{ "registration.birthDateStr":"19560601" }}, {"range":{ "registration.created":{ "from":"2011-01-01", "to":"2014-01-01" } }} ], "must_not":[], "should":[]} }, "from":0, "size":50, "sort":[], "facets":{} }
此搜索查询返回包含lyova
的1行和包含leva
的14行。我不明白为什么它没有返回其中包含leva
的其余26行。点击总数也是15,而它应该显然是41.在我看来,我在这里遇到了弹性搜索错误。