当前位置: 首页 > 面试题库 >

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

薛云瀚
2023-03-14
问题内容

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

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

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


问题答案:

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

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



 类似资料:
  • 我在ElasticSearch中索引了很多产品。我需要从ElasticSearch中的查询中排除ID列表(我从SQL数据库中获取)。假设产品存储为, 我们基于使用ElasticSearch的一些算法向客户显示推荐产品的列表。如果一个顾客把一个产品标记为‘不感兴趣',我们就不必再给他看那个产品了。我们将这些产品保存在一个单独的SQL表中,表中有product_id、customer_id,状态为'n

  • 我试图将查询与exclude查询一起使用,以便它匹配除要排除的术语之外的所有术语。我在一个基本的URI查询中找到了它,但不是常规的JSON查询。如何将此URI转换为JSON类型查询? 其中是不匹配的标记列表。 这是我目前所掌握的: 但是,当我这样做时,仍然包含在结果中。如何排除?

  • 问题内容: 具有以下映射: 我在上面放了两个项目: 现在,我想在每个字段上搜索,但是,所以我要做的是: 它应该只显示该项目,因为第二个项目带有单词,但是它在上,这就是我要忽略的内容。如何存档? PS:这只是一个简单的示例,我有一个包含很多属性的映射,我想在某些搜索中忽略其中的一些属性。 PS2:我正在使用ES 2.3.2 问题答案: 该设置仅在不返回响应中的字段时才有用,但这并不排除搜索该字段。

  • 问题内容: 我有以下Elasticsearch查询。 假设我想从此搜索查询中排除。该文档指出以下内容: 它还支持通配符,例如:test ,以及“添加”(+)和“删除”(-)的功能,例如:+ test ,-test3。 据我了解,我应该能够执行以下操作。 但是,出现以下错误。 如果删除加号和减号,则查询运行正常。如果添加通配符,它​​似乎可以工作,例如以下查询。 但是,这并不是我真正想要的。 当我使

  • 问题内容: 我正在使用scrapy抓取一个似乎在每个URL末尾向查询字符串添加随机值的网站。这将爬网变成一种无限循环。 我如何抓紧忽略URL的查询字符串部分? 问题答案: 示例代码: 输出示例:

  • 问题内容: 是否可以在单个SQL语句中执行以下操作: 例如,在提示中使用电话号码的子集。然后查询其中包含电话号码的数据库,并返回原始子集中哪些电话号码不在我的数据库中?我的数据库是Oracle 10g。 基本上,我不想知道哪个电话号码不在数据库中,而是要取回它们之间的电话号码。 问题答案: 假设电话号码是NUMBER,则可以生成特定范围内的所有电话号码的列表 然后,您可以将该范围内所有电话号码的列