Elasticsearch,搜索结果中缺少一些行

时间:2013-09-27 21:44:01

标签: elasticsearch fuzzy-search

在我的索引中,我有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.在我看来,我在这里遇到了弹性搜索错误。

0 个答案:

没有答案