Elasticsearch的每条记录是否与一个查询中的所有其他记录匹配?

时间:2018-07-27 18:44:24

标签: elasticsearch elasticsearch-5

我正在使用Elasticsearch保留所有活动用户。

例如,如果我有200个活动用户,并且想为每个用户查找300公里之内的所有用户。

为了找到每个用户的匹配项,我需要运行200次以下功能。

findOneMatch(UserID) {
  /*
     elastic search query here to find any user within 300km
  */
}

是否可以进行一个查询并找到每个用户的所有匹配项?

我想要的结果是:

User 1: (matches: User 5, User 15, User 23)
User 2: (matches: User 25, User 115)
User 3: (matches: User 33, User 44, User 55)
User 4: (matches: User 44, User 66, User 115)
...

不是在寻找特定查询,而是在寻找方向

1 个答案:

答案 0 :(得分:2)

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html

您可以利用multisearch API。它的作用是,您可以将所有用户的搜索查询合并为一个查询,然后立即将其触发,您将收到一个批量响应,其中将包含属于多重搜索的每个查询的搜索结果。

请小心,以免批次中的查询数量使服务器不堪重负。