一尘不染

如何从Elastic Search查询中排除大量ID

elasticsearch

我正在开发类似于Tinder的应用程序。在ElasticSearch中,我收集了大约50万用户及其位置。每当用户打开应用程序以搜索附近的用户时,我都会对该集合运行Elastic
Search查询。查询是相当复杂的,它不仅考虑位置,而且考虑用户的活跃程度或他拥有多少张照片。

我所苦恼的是如何从查询中排除当前用户已经刷过的那些用户。一种简单的实现方式可能是将嵌套的用户ID数组作为索引中每个用户文档的一部分进行维护,并基于此进行排除。但是,由于每个用户都会做成千上万次滑动,因此阵列可能会变得非常大,因此它不是可扩展的解决方案。

有没有一种方法可以根据其ID从elasticsearch查询中排除大量实体,而这又不会损害性能?


阅读 370

收藏
2020-06-22

共1个答案

一尘不染

使用条款查询的查找功能:条款查找机制

当需要指定包含大量术语的术语过滤器时,从索引中的文档中获取这些术语值将是有益的。一个具体的例子是过滤您的关注者发布的推文。术语过滤器中指定的用户ID数量可能很多。在这种情况下,使用术语过滤器的术语查找机制是有意义的。

2020-06-22