聚合分析 aggregation
es 在搜索功能之外,提供的针对数据统计分析的功能
- 功能丰富,提供bucket metric pipeline 等多种分析方式
- 实时性高,所有结果都是即时返回,而hadoop等大数据系统是t+1级别
聚合分析种类
- bucket 分桶类型 类似sql中的group by 语法
- metric 指标分析类型 如计算最大值 最小值 平均值等
- pipeline 管道分析类型,基于上一级的聚合分析结果进行再分析
- matrix 矩阵分析类型
metric 聚合分析
单值分析
- min max avg sum
- cardinality
多值分析
- stats extends stats
- percentile percentile rank
- top hits
bucket 聚合分析
将文档归类为不同的bucket中
- terms
- range
- date range
histogram
- 直方图 以固定间隔策略来分割数据
- date histogram
pipeline
pipeline 的分析结果会输出到原结果中 根据输出位置不同 分为两类
parent 结果内嵌到现有的聚合分析结果中
- derivative
- moving average
- cumulative sum
sibling 结果与现有聚合分析结果同级
- max min avg sum bucket
- stats extended stats bucket
- percentile bucket
作用范围
es默认的作用范围是query结果集,也可以设置其他范围
- filter 为了聚合分析设定过滤条件,不更改整体query语句的情况下调整作用范围
- post_filter 作用域文档过滤 但在聚合分析后生效
- global 无视query过滤条件 基于全部文档进行分析
排序
可以使用自带的关键数据进行排序
- _count文档数
- _key按照key值排序
原理与精准度问题
原因 数据分散在多个shard上
- 设置shard为1 消除苏韩剧分散问题
- 设置shard size 即每次从shard上额外获得文档
terms聚合返回结果中有如下两个统计值
- doc_count_error_upper_bound 被遗漏的term的可能的最大值
- sum_other_doc_count返回结果bucket的term外其他term的文档总数
shard size 默认大小如下 size*1.5 + 10
通过调整shard size的大小降低 doc_count_error_upper_bound 来提升准确度 大了整体计算量 降低了响应时间
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。