【发布时间】:2021-01-04 08:48:56
【问题描述】:
我有一个场景,我需要在 Java 中为数字字段的弹性搜索构建范围聚合,但我没有范围。我需要从现有文档中计算范围(最小值和最大值),然后将其传递给范围聚合。我们该怎么做?是不是我们可以结合范围、最小值和最大值聚合?
【问题讨论】:
标签: java elasticsearch elasticsearch-aggregation
我有一个场景,我需要在 Java 中为数字字段的弹性搜索构建范围聚合,但我没有范围。我需要从现有文档中计算范围(最小值和最大值),然后将其传递给范围聚合。我们该怎么做?是不是我们可以结合范围、最小值和最大值聚合?
【问题讨论】:
标签: java elasticsearch elasticsearch-aggregation
理想情况下,可以从聚合的输出中选择一个值或类型的值/结果,以便在另一个聚合系列中重用。这一系列聚合称为 Pipeline Aggregation https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline.html
但是,Range Aggregation 不是 Pipeline 兄弟聚合的一部分。因此,在您的场景中,您需要进行第一次查询(将最小值和最大值作为两个度量聚合https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics.html)以获取最小值和最大值,然后重用数据以对 ES 进行第二次调用。
【讨论】:
已提出类似问题 - How to create a dynamic price range filter using elasticsearch
以上帖子中的链接指向许多人从 elasticsearch 请求范围聚合的未解决问题/功能。
【讨论】: