聚集分类
- 度量型: 即常见的聚合操作
- 桶型: 将匹配文档切分为多个桶,返回每个桶里面的文档数量
度量聚集
- 高级统计
- 对查询返回的匹配文档集合进行聚合计算,是绝对准确的
- stats/extended_stats: 对数值型字段同时获取sum,avg,max,min,value_count等聚集结果
- 近似统计
包含百分位好人基数两种近似统计方式,牺牲一定程度的准确性换取性能提升- 百分位(percentiles):获取小于测量值的累计百分比,50%的百分位最不准确,越接近0或100越准确
- 基数(cardinality): 获取字段中唯一值的数量
多桶型聚集
- 词条聚集(trems aggregation)/显著词条聚集: 根据字段值创建多个桶
- 词条聚集一般统计的是词条,因此通常需要在非分析型字段(不分词)上执行这种聚集
- 默认情况下聚集的词条顺序是由词频降序排序的,也可以使用order属性指定排序规则
- 默认的terms聚集返回倒序排序的前10个(可通过size配置)词条,但这未必是准确的
- 范围聚集(range aggregation): 根据范围创建不同的桶
- 直方图聚集(histogram aggregation): 根据步长构建多个桶
- 嵌套聚集(nested aggregation): 允许用户针对文档的关系执行聚集
- 地理聚集(geo distance aggregation): 根据地理位置创建桶
- 嵌套聚集:多桶聚集通常是开始聚集的起始点,子聚集作用在每个桶上
- 分组top: 在多桶上使用top_hits嵌套聚集返回分组信息
单桶聚集
默认情况下ElasticSearch在查询结果上运行聚集,如果要改变这种默认行为使用单桶聚集
- global聚集: 创建一个桶包含索引中的全部文档
- filter聚集: 创建一个桶包含所有和过滤器匹配的文档,与后置过滤器的区别是后置过滤器不影响聚集结果
- missing聚集: 创建一个桶包含某个字段缺失的文档
注意: 聚集或排序字段不能是text类型,否则需要开启该字段数据的缓存