ES3_5聚合查询
聚合查询
聚合 - aggs
Sorting, aggregations, and accessing field values in scripts 需要使用到一个称为 fielddata(正排索引)的数据结构:
1 | PUT megacorp/_mapping/employee/ |
聚合作用范围
- ES聚合分析的默认作用范围是query的查询结果集
- ES还支持以下方式改变聚合的作用范围
Filter
Post Filter
Global
简单聚合
单值分析(只输出一个分析结果):
- min, max, avg, sum
- Cardinality (类似 distinct count)
多值分析(输出多个分析结果):
- stats, extended stats
- percentile, percentile rank
- top hits
Bucket
按照一定的规则,将文档分配到不同的桶中,从而达到分类的目的。
Bucket同样支持嵌套。
常用的Bucket Aggregation函数:
- terms
按某个字段聚合,结果默认会进行分词
需要字段打开fielddata才能进行term aggregation
keyword默认支持doc_values
text需要在mapping中enable fielddata - 数字类型
- Range
- Histogram
1
2
3
4
5
6
7
8
9
10
11POST employees/_search
{
"size": 0,
"aggs": {
"jobs": {
"terms": {
"field": "job"
}
}
}
}
Pipeline
对聚合分析结果再进行一次聚合分析
Pipeline的分析结果会输出到原结果中,根据位置的不同,分为两类:
- Sibing:结果和现有分析结果同级
max, min, avg, sum bucket
stats, extended status bucket
percentiles bucket - Parent:结果内嵌到现有的聚合分析结果之中
Derivative(求导)
Cumultive Sum(累计求和)
Moving Function(滑动窗口)
1 | POST employees/_search |