引擎盖下的 Elasticsearch 统计和总和聚合
Elasticsearch Stats and Sum Aggregation under the hood
我想了解弹性搜索在统计聚合和总和聚合方面的工作原理。
我的用例需要日期直方图聚合作为主要聚合,需要求和聚合或统计聚合作为嵌套聚合。我在 Kibana 中对相同数量的数据使用这两种聚合来执行查询。两个查询执行的时间相似。因此,对于我们所有的用例,如果统计和总和聚合之间没有性能差异,我们可能会一直使用统计聚合。
我找不到有关这些聚合内部工作的任何详细信息。请求向我提供有关它的任何信息,或向我指出任何描述这些聚合如何在幕后工作的文档。
Elasticsearch 版本:7.1
谢谢
如有疑问,go to the source。
如果您查看 StatsAggregator.java and SumAggregator.java 的实现,您会发现它们非常相似。
SumAggregator 只计算总和,而 StatsAggregator 计算总和、最小值、最大值、计数和平均值。尽管后者似乎做了更多的工作,但它也只对数据进行一次迭代以计算额外的指标,但这些计算在计算上并不昂贵。
因此,如果您知道您只需要总和,请使用 SumAggregator,但如果您还需要最小值、最大值、计数或平均值,则转而使用 StatsAggregator,这样您只需迭代一次数据。
我想了解弹性搜索在统计聚合和总和聚合方面的工作原理。
我的用例需要日期直方图聚合作为主要聚合,需要求和聚合或统计聚合作为嵌套聚合。我在 Kibana 中对相同数量的数据使用这两种聚合来执行查询。两个查询执行的时间相似。因此,对于我们所有的用例,如果统计和总和聚合之间没有性能差异,我们可能会一直使用统计聚合。
我找不到有关这些聚合内部工作的任何详细信息。请求向我提供有关它的任何信息,或向我指出任何描述这些聚合如何在幕后工作的文档。
Elasticsearch 版本:7.1
谢谢
如有疑问,go to the source。
如果您查看 StatsAggregator.java and SumAggregator.java 的实现,您会发现它们非常相似。
SumAggregator 只计算总和,而 StatsAggregator 计算总和、最小值、最大值、计数和平均值。尽管后者似乎做了更多的工作,但它也只对数据进行一次迭代以计算额外的指标,但这些计算在计算上并不昂贵。
因此,如果您知道您只需要总和,请使用 SumAggregator,但如果您还需要最小值、最大值、计数或平均值,则转而使用 StatsAggregator,这样您只需迭代一次数据。