0
点赞
收藏
分享

微信扫一扫

Elasticsearch聚合介绍:度量聚合(metric aggregation)和桶聚合(bucket aggregation)

上古神龙 2022-01-09 阅读 38

Elasticsearch聚合分为两种类型,度量聚合(metric aggregation)和桶聚合(bucket aggregation)。

定义和适用范围

  • 度量聚合:接收一个输入文档集并生成至少一个统计值。一遍使用min、max、sum、avg进行聚合,另外还支持通过脚本、value_count、stats、extended_stats进行度量聚合。
  • 桶聚合:桶聚合返回很多子集,并限定输入数据到一个特殊的叫做桶的子集中。一遍使用term、range、date_range、histogram、date_histogram、nested、missing、IPv4 range、时区、geo_distance、geohash_grid进行桶聚合。

举例使用

1. 创建测试数据, 参考文章elasticsearch aggregations 之一:引入buckets、metrics_w1346561235的博客-CSDN博客,创建es索引。该案例假定es有一个index,存储了某家汽车经销商的销售信息:包括车的售价、销售时间、车身颜色、生产厂商等。

1.1 创建索引结构,可通过postman来进行操作。

 1.2 通过_bulk往es索引批量导入文档

 1.3 查询索引中的所有文档

2. 对汽车的价格price字段进行平均值avg指标聚合。

 补充说明:

cars/_search:表示在cars索引中,进行search请求。

"size": 0, 表示返回结果集中显示满足条件的文档记录为0条。(即不显示满足条件的文档记录)。

”aggs"  为顶层关键字,表示aggregation聚合操作

"avg_price"为自定义名称。

"avg" 平均值度量。

“field": "price" 对price字段进行度量聚合。

在返回的aggregations->avg_price->value中,可看到最后度量聚合结果为26500.0,算出该经销商卖出汽车的平均价格。

3. 桶聚合类型1:terms桶聚合,为字段中每种词条创建一个桶。下面对汽车颜色进行terms桶聚合。

 补充说明:

”cts_by_color"为自定义桶聚合名称。

"aggs" 顶层关键字,表示聚合操作。

“terms" 关键字表示该聚合为term桶类型。

"field": "color" 表示基于color字段进行term类型桶聚合。

从返回结果aggregations->buckets集合中,可看到red桶聚合有4条记录,blue桶聚合有2条记录,gree桶聚合有2条记录。

4. 桶聚合类型2:range桶聚合,使用定义的范围来创建桶。下面对汽车价格进行range桶聚合。

”price_range" 为自定义桶聚合名称。

 "range" 关键字表示range类型桶聚合。

“filed": "price" 对price字段进行range类型桶聚合。

”ranges" 关键字表示range集合。

第一种range: {"from": 10000, "to": 80000}, 上界包含,下界不包含。

第二种range: {"from": 80000}。

从返回结果aggregations->price_range->buckets,可看到价格范围{"from": 10000, "to": 80000}的文档记录数有7条,{"from": 80000}的有1条。

5. 桶聚合类型3:date_range桶聚合,类似于range桶聚合,但它专用在使用日期类型的字段。下面对汽车销售时间进行date_range桶聚合。

 补充说明类似于range桶聚合。

举报

相关推荐

Elasticsearch桶聚合和管道聚合

0 条评论