ElasticSearch聚合分析:分桶聚合(bucket)

来自Wikioe
跳到导航 跳到搜索


关于

Elasticsearch 桶聚合,目的就是数据分组,先将数据按指定的条件分成多个组,然后对每一个组进行统计。

  • 组的概念跟桶是等同的,在ES中统一使用桶(bucket)这个术语。


ES 桶聚合的作用跟 SQL 的 group by 的作用是一样的,区别是 ES 支持更加强大的数据分组能力,SQL 只能根据字段的唯一值进行分组,分组的数量跟字段的唯一值的数量相等。

例如: group by 店铺 id, 去掉重复的店铺 ID 后,有多少个店铺就有多少个分组。


ES常用的桶聚合如下:

  • Terms 聚合:类似 SQL 的 group by,根据字段唯一值分组
  • Histogram 聚合:根据数值间隔分组;
    例如: 价格按100间隔分组,0、100、200、300等等
  • Date histogram聚合:根据时间间隔分组;
    例如:按月、按天、按小时分组
  • Range聚合:按数值范围分组;
    例如: 0-150一组,150-200一组,200-500一组。


  • “桶聚合”一般不单独使用,都是配合“指标聚合”一起使用,对数据分组之后肯定要统计桶内数据,在 ES 中如果没有明确指定指标聚合,默认使用 Value Count 指标聚合,统计桶内文档总数。