如何在elasticsearch中为给定查询按字段获取不同的结果?

Posted

技术标签:

【中文标题】如何在elasticsearch中为给定查询按字段获取不同的结果?【英文标题】:How to get distinct results by field for a given query in elasticsearch? 【发布时间】:2013-06-18 20:20:27 【问题描述】:

我有以下问题,我有一个包含字段“xxx”的文档,该字段可能在整个索引中具有重复值, 我想做一件非常简单的事情,我希望能够在我所有其他字段上使用 bool 查询来查询索引,

但是查询的结果应该只返回基于 xxx 的不同结果,我的索引模拟了人,住在同一所房子里的人是重复的。我只想在我的结果中有不同的房屋,但搜索是在所有房屋中完成的

我提前知道重复,因为这是一次性索引作业,我可以做些什么来在弹性搜索中启用此功能,我正在阅读,我知道弹性或 lucene 中不存在不同的盒子 我要求一些关于如何实现这一点的高级想法,包括一些聪明的索引,因为我可以完全控制并且我也提前知道重复项

我有两种情况: 1.我想统计给定查询的结果——需要非常快 2. 我想检索实际的文档——性能无关紧要

【问题讨论】:

【参考方案1】:

我知道弹性搜索(尚)不支持分组。请参阅this 主题。但我认为玩具可以利用 ElasticSearch 提供的亲子支持。你的房子是父母,居民是孩子。

因此,您的索引中有两种类型,房屋和居民。驻留映射将具有以下内容:

"resident" : 
    "_parent" : 
        "type" : "house"
    

通过这种方式可以防止重复,您可以获得不同的结果(房屋),并且可以搜索所有房屋。

【讨论】:

以上是关于如何在elasticsearch中为给定查询按字段获取不同的结果?的主要内容,如果未能解决你的问题,请参考以下文章

使用Elasticsearch查询字段的所有唯一值

Elasticsearch按请求体基本查询

如何在presto elasticsearch中按子句pushdpown order

在 Confluent Elasticsearch 连接器中为空值时避免覆盖字段

如何在 Firebase 云 Firestore 中查询一个字段然后按另一个字段排序?

ElasticSearch 按多个字段分组