基于数组交集对Elasticsearch结果进行提升/排序

时间:2016-04-14 21:21:45

标签: elasticsearch

我有兴趣在索引中包含数字ID列表,例如:

some_ids: [1234, 2345, 3456,...]

然后我想通过我的搜索传递另一个id数组,以便搜索数组与索引数组共有的id越多,结果就越相关。

理想情况下,可以返回与搜索数组和索引数组相交的id数组,并返回结果。

每个数组中的id数量通常都在100以下,但在索引端可能会增加到数千个,在最坏的情况下它们会在查询方面增长。

任何人都知道这是否可行以及可能有什么好方法?

提前致谢!

〜布赖恩

1 个答案:

答案 0 :(得分:0)

您可以使用should进行bool查询,如下所示:

"query": {
    "bool": {
        "should": [
           {
               "terms": {
                  "field_ids": [
                     "123456",
                     "987654"
                  ]
               }
           }
        ]
    }
}

使用此命令,您将获得分数,默认情况下,ES分数得分:)

映射:

PUT test_ids/_mapping/my_type
{
    "my_type" : {
        "properties" : {
            "field_ids" : {
                "type":"integer"
            }
        }
    }
}