1.简介
聚合分析是用来对ElasticSearch中存储的数据进行统计分析的,主要包括三种类型。
(1).Metric
指标分析类型主要分为两类,一类是单值分析,只输出一个分析结果,主要包括min、max、avg、sum和cardinality(没有count)。另一类是多值分析,可以输出多个分析结果,如stats、extended_stats、percentiles、percentile_ranks和top hits。
(2).Bucket
分桶分析类型是按照一定的规则将文档分配到不同的桶中,达到分类分析的目的,类似于sql中的group by。主要包括terms、range、date range、histogram、date histogram。
(3).Pipline
管道分析类型,基于上一级的聚合分析结果进行再分析,而且支持链式调用。pipeline的分析结果会输出到原结果中,根据输出位置的不同,主要分为两类,一类是结果与现有聚合分析同级的sibling,主要包括max、min、avg、sum bucket以及stats、extended stats、percentiles bucket。另一类是结果内嵌到现有聚合分析结果中的parent,主要包括derivative、moving average和cumulative。
(4).文档准备
打开kibana Dev Tools,分别添加索引和文档记录。
2.单值查询
(1).min、max、avg、sum
min、max、avg、sum分别类似于sql中的min、max、avg、sum功能,如对salary字段进行avg查询。
(2).cardinality
统计不同数值的个数,类似sql中的distinct功能,如对job字段进行cardinality查询。
3.多值查询
(1).stats
返回一系列数值类型的统计值,包含min、max、avg、sum和count,如对salary字段进行stats查询。
(2).extended_stats
对stats的扩展,包含了更多的统计数据,如平方和(sum_of_squares)、方差(variance)、标准差(std_deviation)和标准差范围(std_deviation_bounds),如对salary字段进行extended_stats查询。
(3).percentiles
百分位数统计,通常用于统计数据分布情况,如对salary字段进行percentiles查询。
百分位数统计名称解释:高等院校的入学考试成绩经常以百分位数的形式统计。假设某个考生在入学考试中的语文原始分数为54分。相对于参加同一考试的其他学生来说,并不容易知道他的成绩如何。但是如果原始分数54分恰好对应的是第70百分位数,我们就能知道大约70%的学生的考分比他低,而约30%的学生考分比他高。
(4).percentile_ranks
百分位数统计的逆操作,返回值所在的百分位,如对salary字段,查询其值为28000和30000的百分位。
(5).top_hits
一般用于分桶后获取该桶内最匹配文档的顶部文档列表,即详情数据,如获取salary字段前3个详情。