在深入探讨聚合功能之前,我们需首先了解Elasticsearch中的一个基本概念:桶(bucket)。
桶的主要作用是通过设定某一特定标准对文档进行分组归纳。桶聚合,这是一种用户定义的聚合方式,用于将文档依据某种标准划分为各异的桶群,以便于后续的聚合分析。譬如,在拥有包含产品销售数据的索引的情境下,我们可以利用桶聚合技术,根据产品类别对销售数据进行细分。每一桶都对应着一种产品类别,存储该类别的销售数据。
通俗来讲,桶聚合实质上类似于SQL中的分组,即把每个分组内的数据在Elasticsearch中统称为桶。
接下来,让我们将聚合功能进一步细化为桶聚合、指标聚合与管道聚合三大类别。
桶聚合(Bucket):桶聚合则主要用于将文档合理划分为不同的桶群,以便于进行之后的聚合分析。具体而言,它能基于字段值、日期区间、数值范围等多种因素,将文档分门别类地置于相应的桶中。常见的桶聚合方式包括术语(terms)、日期直方图(date_histogram)、范围(range)等。桶聚合赋予了文档自助分组的权力,从而实现了分桶分析的可能性。
指标聚合(Metrics):指标聚合的主要功能是对文档中的数值属性进行精确计算,比如求和、均值、最大值、最小值等指标。它会对各桶内的文档实施数值运算,最终返回聚合结果。相关的指标聚合类型包括求和(sum)、平均值(avg)、最大值(max)以及最小值(min)等。指标聚合为我们提供了对文档内数值字段进行统计与运算的可能性。
管道聚合?