我有两个关键字的弹性字段是ID。两个字段可以包含相同的值。
我一直在创建一个过滤器聚合,以获得其中一个字段的前10个计数(应用了一些过滤器,这与此问题无关)。
我现在需要创建一个过滤器聚合,以根据这两个字段获得前10个计数。
因此,对于给定的ID '1234',它将是field 1 = 1234或field 2 = 1234的文档计数。获取单个ID的计数当然很容易,但是否可以在这样的聚合中使用两个字段?
Elasticsearch v7.12.1我注意到'combined_fields'是在v7.13中引入的-我不知道它是否相关。
1条答案
按热度按时间sczxawaw1#
更新答案
Tldr;
这不可能仅通过聚合来实现。
您必须以某种方式将这些术语分组到一个字段中。您可以使用运行时字段(因此不需要重新索引)
解决方案
什么是
field_agg
?在这种情况下:
初步答复
Tldr;
听起来像是
filters
aggregation的工作。解决方案
使用以下查询:
应该给予你:
复制:
设置: