实时搜索引擎Elasticsearch7.4提供了4大家族的聚合方式,包括metrics聚合、bucket聚合、matrix聚合以及pipeline聚合。
bucket聚合集不像指标聚合集(metrics aggregations)基于字段计算指标值,他们会生成数桶文档(buckets of documents)。每一桶都和一项规则(由聚合类型决定)对应,这些规则决定了在当前上下文(in the current context,包括query上下文、filter上下文)一个文档是否符合中选。换句话说,桶(buckets)有效地定义了文档集合。除了桶本身,bucket聚合操作还计算并返回落在桶内的文档的数量。
与metrics聚合集相对而言,bucket聚合集可以拥有子聚合。这些子聚合会在由他们的父级桶聚合中生成的桶中进行聚合操作。
不同的桶聚合类型具有不同的聚合行为,也就是具有不同的聚合策略。一些定义了单个的桶,一些定义了固定数目的多个桶,还有一些是在聚合运输过程中动态生成桶。
注意:在一个响应体中允许的桶的最大数目是由一个动态集群配置参数“search.max_buckets”决定的。默认值时10000,超过这个限额的请求会抛出一个异常。