我想了解弹性搜索在统计聚合和求和聚合方面是如何工作的。
我的用例需要日期直方图聚合作为主聚合,求和聚合或统计聚合作为嵌套聚合。我在Kibana中对相同数量的数据使用这两种聚合来执行查询。这两个查询的执行时间是相似的。因此,对于我们所有的用例,我们可能一直使用统计聚合如果在统计之间没有性能差异;和聚合。
我找不到任何关于这些聚合内部工作的详细信息。请求向我提供有关它的任何信息,或向我指出描述这些聚合在底层如何工作的任何文档。
Elasticsearch version: 7.1
谢谢
如果有疑问,请查看来源
如果你看一下StatsAggregator.java和SumAggregator.java的实现,你会发现它们非常相似。
SumAggregator只计算sum,而StatsAggregator计算sum, min, max, count和avg。尽管后者似乎做了更多的工作,它也只是通过数据迭代一次以计算额外的指标,但这些计算在计算上并不昂贵。
所以如果你知道你只需要sum,使用SumAggregator,但如果你也需要min, max, count或avg,那么去StatsAggregator代替,所以你只迭代一次数据。