Elasticsearch应用(十)
1.为什么需要聚合操作
聚合可以让我们极其方便的实现对数据的统计、分析、运算,例如:
- 什么品牌的手机最受欢迎?
- 这些手机的平均价格、最高价格、最低价格?
- 这些手机每月的销售情况如何?
2.什么是聚合
聚合(aggregations)可以实现对文档数据的统计,分析,运算,在做聚合的时候往往是与文档过滤一起用的,一般不会对整个索引库进行聚合操作
3.聚合语法
4.聚合分类
- 桶聚合(Bucket): 用来对文档做分组,类似于MySQL的group by
- TermAggregation: 按照文档字段值分组
- Date Histogram: 按照日期阶梯分组,例如一周为一组,或者一月为一组
- 注意:
- 分词字段不行,必须是不能分词的字段
- 默认情况下,Bucket聚合会统计Bucket内的文档数量,记为_count,并且按照_count降序排序
- 默认情况下,Bucket聚合是对索引库的所有文档做聚合,我们可以限定要聚合的文档范围,只要添加query条件即可
- 度量聚合(Metric): 用以计算一些值,比如:最大值,最小值,平均值等
- Avg: 求平均值
- Max: 求最大值
- Min: 求最小值
- Stats: 同时求max,min,avg,sum等
- 管道聚合(pipeline): 其他聚合的结果为基础做聚合
- Matrix: 支持对多个字段的操作并提供一个结果矩阵
5.度量聚合
介绍
—些数学运算,可以对文档字段进行统计分析,类比MySQL中的 min(),max(),sum() 操作