Elasticsearch聚合分析
什么是聚合分析
简介:
聚合分析
,英文为
Aggregation
,是es除搜索功能外提供的针对es数据做统计分析的功能
- ES提供多种分析方式: Bucket、Metric、Pipeline 等
- Bucket,分桶类型,类似SQL语法中的group by语法。
- Metric,指标分析类型,如计算最大值,最小值,平均值等等。
- Pipeline,管道分析类型,基于上一级的聚合分析结果进行再分析。
- Matrix,矩阵分析类型。
Metric聚合分析
-
Metric分析分类
-
1.单值分析:只输出一个分析结果。
- min(最小值)
- max(最大值)
- avg(平均值)
- sum(总和)
- cardinality(计算数目的,类似sql中的distinct count)
-
2.多值分析,输出多个分析结果
- stats(多样统计分析,可以一次性得到最小值,最大值,平均值,中值等等)、
- extended stats、percentile(百分位数的统计)、
- percentile rank、top hits(排在前面的结果列表)
-
1.单值分析:只输出一个分析结果。
单值:最小值
GET /linGuanlink/_search
{
"size": 0, // 不需要返回文档列表
"aggs": {
"min_age": { // 自定义聚合名称
"min": { // 聚合类型
"field": "age"
}
}
}
}
单值:最大值
GET /linGuanlink/_search
{
"size": 0,
"aggs": {
"max_age": {
"max": {
"field": "age"
}
}
}
}
单值:平均值
GET /linGuanlink/_search
{
"size": 0,
"aggs": {
"avg_age": {
"avg": {
"field": "age"
}
}
}
}
单值:求和
GET /linGuanlink/_search
{
"size": 0,
"aggs": {
"sum_age": {
"sum": {
"field": "age"
}
}
}
}
单值:多个结果
GET /linGuanlink/_search
{
"size": 0,
"aggs": {
"min_age": {
"min": {
"field": "age"
}
},
"sum_age": {
"sum": {
"field": "age"
}
}
}
}
多值:Stats
- 多值分析之Stats,返回一系列数值类型的统计值,包含min、max、avg、sum和count
GET /linGuanlink/_search
{
"size": 0,
"aggs": {
"stats_age": {
"stats": {
"field": "age"
}
}
}
}
多值:Extended Stats
- 多值分析之Extended Stats,对stats的扩展,包含了更多的统计数据,如方差,标准差等等
GET /linGuanlink/_search
{
"size": 0,
"aggs": {
"stats_age": {
"extended_stats": {
"field": "age"
}
}
}
}
多值:percentile
-
多值分析之percentile,百分位数统计,percentiles是关键词。
-
计算99%数据年龄在多少以下(50%年龄的21岁以下)
GET /linGuanlink/_search
{
"size": 0,
"aggs": {
"per_age": {
"percentiles": {
"field": "age",
"percents": [
1,
5,
25,
50,
75,
95,
99
]
}
}
}
}
多值:percentile_ranks
- 14岁及其以下,所占的比例
GET /linGuanlink/_search
{
"size": 0,
"aggs": {
"per_rank_age": {
"percentile_ranks": {
"field": "age",
"values": [
14,
18,
26
]
}
}
}
}
多值:top hits
- 多值分析之top hits,一般用于分桶后获取该桶内最匹配的顶部文档列表,即详情数据
-
top_hits的作用就是在每个组下面的数据进行筛选
size:每组显示的数据
sort:每组的排序
GET /linGuanlink/_search
{
"size": 0,
"aggs": {
"group_agg": {
"terms": {
"field": "age",
"size": 10
},
"aggs": {
"top_data": {
"top_hits": {
"size": 2,
"sort": [
{
"age": {
"order": "desc"
}
}
]
}
}
}
}
}
}
版权声明:本文为LiGuanLink原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。