子聚合和嵌套聚合的区别
Difference between sub aggregation and nested aggregation
elasticsearch中子聚合和嵌套聚合有什么显着区别?
我们应该在什么情况下使用它们?
子聚合
ElasticSearch 聚合 运行 一组与查询匹配的文档。如果您使用 Bucketing 聚合,它将将该文档集拆分为许多较小的集合。您可以在分桶聚合中放置另一个聚合,然后它将 运行 在每个较小的集合上。
例如,如果您的 Web 访问日志包含 URL 和响应时间,您可以将平均聚合放在桶聚合中,以查找每个 URL 的平均响应时间。
嵌套聚合
虽然在进行子聚合时聚合是 'nested',但 'nested aggregation' 通常指的是一种特定类型的单桶聚合,用于嵌套文档。它允许您获取一组文档,其中嵌套了子文档集合,并且 运行 对所有子文档进行聚合,就好像它们没有嵌套一样。
例如,如果每个服务器都有一个文档,其中嵌入了自己的访问日志,则可以在嵌套聚合中使用平均聚合来查找所有服务器的平均响应时间。
参见 http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/nested-objects.html
elasticsearch中子聚合和嵌套聚合有什么显着区别? 我们应该在什么情况下使用它们?
子聚合
ElasticSearch 聚合 运行 一组与查询匹配的文档。如果您使用 Bucketing 聚合,它将将该文档集拆分为许多较小的集合。您可以在分桶聚合中放置另一个聚合,然后它将 运行 在每个较小的集合上。
例如,如果您的 Web 访问日志包含 URL 和响应时间,您可以将平均聚合放在桶聚合中,以查找每个 URL 的平均响应时间。
嵌套聚合
虽然在进行子聚合时聚合是 'nested',但 'nested aggregation' 通常指的是一种特定类型的单桶聚合,用于嵌套文档。它允许您获取一组文档,其中嵌套了子文档集合,并且 运行 对所有子文档进行聚合,就好像它们没有嵌套一样。
例如,如果每个服务器都有一个文档,其中嵌入了自己的访问日志,则可以在嵌套聚合中使用平均聚合来查找所有服务器的平均响应时间。
参见 http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/nested-objects.html