聚合剖析 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 来晋升准确度 大了整体计算量 升高了响应工夫