Elasticsearch 为每条记录匹配一次查询中的所有其他记录?

Elasticsearch for each record to match all other records in one query?

我正在使用 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)
...

不是在寻找具体查询,而是在寻找方向

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

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

小心避免服务器因批处理中的查询数量而过载。