我正在使用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)
...
不是在寻找特定查询,而是在寻找方向
答案 0 :(得分:2)
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html
您可以利用multisearch API。它的作用是,您可以将所有用户的搜索查询合并为一个查询,然后立即将其触发,您将收到一个批量响应,其中将包含属于多重搜索的每个查询的搜索结果。
请小心,以免批次中的查询数量使服务器不堪重负。