ElasticSearch:术语查询中的交集计数

时间:2014-05-22 18:28:54

标签: elasticsearch

我使用elasticsearch实现完整的用户搜索。我想返回搜索用户和每个结果之间共享的共同朋友的数量。我目前正在使用"条款"查询以提高与搜索用户共享共同朋友的用户的结果分数。

对于上下文,我的查询的相关块粘贴在下面:

"should": [ { "terms": { "friend_ids": [ "100", "2", "8", "9", "15", "25" ] } } ]

理想情况下,响应会为每个文档包含一个名为" num_mutual_friends" ....

的字段

1 个答案:

答案 0 :(得分:0)

实现此目的的一种方法是使用script_field:

{
  "query": {...},
  "script_fields": {
    "num_mutual_friends": {
      "script": {
        "inline": "doc['friend_ids'].values.intersect(input_friend_ids).length",
        "params": {
          "input_friend_ids": [
            "101", "9", "8"
          ]
        }
      }
    }
  }
}