最近学习es聚集,聚集的类型和内容有点多,所以做一下整理
目录:
- 度量聚集
- 统计数据(stats)
- 高级统计(extended stats)
- 近似统计(percentitles、percentile_ranks、cardinality)
- 多桶型聚集
- 词条聚集(terms)
- 范围聚集(rank)
- 直方图聚集(histogram)
- 嵌套聚集(nested)
- 地理距离聚集(geo distance)
度量聚集
度量聚集是从不同文档的分组文档中提取统计数据,或者从其他聚集的文档桶中提取统计数据,这些统计数据通常来自数值型字段,如最小或者平均价格,对于非数值型字段,可以使用cardinality聚集来获得唯一数值的数量。
- 数值型字段的聚集:比如统计所有文档中某一个数值型字段的数据统计,例如统计所有的商品价格(price字段)的数据统计,那么可以得到price字段的数据统计:所有商品的最大,最小价格、所有商品的均价、所有商品价格的方差、所有商品价格的总和等等数据统计。
- 数值型和非数值型可以使用基数聚集来获得唯一数值的数量,在看es实战这本书的时候,对基数聚集有点不理解,在es官方文档的解释就好理解多了:
cardinality
(注:基数)度量。 它提供一个字段的基数,即该字段的 distinct 或者 unique 值的数目,简单理解就是去重之后的数量。除了cardinality聚集还有percentile和percentile_rank聚集。
多桶型聚集
度量型聚集是获取所有的文档,并且生成一个或多个描述他们的数值。多桶型聚集是讲文档放入不同的桶中,就像根据标签对文档进行分组,然后对于每个桶,你讲获得一个活多个数值来描述这个桶。上面一句话是摘抄es实战书的上原话,我简单的理解是对文档先进行分类,每一个分类就是一个桶,然后对每一个桶进行数据描述,也就是对每个桶进行度量聚集。
- 词条聚集:可以理解对文档中的某一个字段的值得不同进行分类,可以获取每一个分类的文档数量等等数据,
- 范围聚集:根据文档落入哪些数值、日期或者IP地址的范围来创建不同的桶,和词条聚集的相同点都是分类,不过范围聚集的分类方法和词条聚集的分类方法不同,词条聚集的分类根据词条的不同来分类,范围聚集的分类就比较灵活,可以根据日期的范围区间来分类也可以根据商品价格自定义分类区间来分类,等等。
- 直方图聚集:直方图聚集和范围聚集差不多,不过直方图聚集不需要定义每个范围区间,只需要定义间距值,我们都学过直方图,直方图的X轴会有间距一样的区间,Y轴就是每个区间的统计数据,所以直方图聚集需要定义间距值。
- 嵌套聚集:嵌套聚集就是多桶型聚集下嵌套聚集,比如在每一个桶下再进行一次聚集。
- 地理距离聚集和地理散列格聚集:允许根据地理位置来创建桶。