es之聚合
1、查询结构{"query": {…},"aggs": {"aggregation_name": {"aggregation_type": {...}}}}其中的aggs为aggregations缩写形式,两种都可以。聚合的数量没有限制。每个聚合需要指定唯一名字及对应类型。...
·
1、查询结构
{
"query": {…},
"aggs": {
"aggregation_name": {
"aggregation_type": {
...
}
}
}
}
其中的aggs为aggregations缩写形式,两种都可以。
聚合的数量没有限制。每个聚合需要指定唯一名字及对应类型。
2、聚合类型
有三种类型:metrics,buckets和pipeline.
2.1 metrics聚合
avg | 单值聚合。计算数值的平均值。 |
min | 单值聚合。计算数值的最小值。 |
max | 单值聚合。计算数值的最大值。 |
stats | 多值聚合。计算的结果中包含min,max,sum,count和avg |
extended_stats | 多值聚合,计算的结果中除了包含stats有的,还包含sum_of_squqres,variance,std_deviation和std_deviation_bounds |
value_count | 单值聚合。用于统计文档值的个数,不会忽略重复值,重复值也会计算在内。 |
cardinality | 单值聚合。计算不同值的个数。 |
percentiles | 多值聚合。计算数值类型的一个或者多个百分比值。默认返回的是[1,5,25,50,75,95,99]对应的百分位数。 |
percentile_ranks | 多值聚合,计算数值类型的一个或者多个百分排名 |
top_hits | 跟踪最相关的文档。此聚合器目的是作为子聚合器,为了每个bucket来聚合最匹配文档。不建议top_hits作为最外层聚合。 |
geo_bounds | 计算包含所有地理位置值的边界框 |
scripted_metric | 执行脚本提供度量输出 |
avg支持的参数有:
- missing,定义当文档缺少这个字段值时应该怎样处理。默认是忽略。如果设置了就将该值作为当前文档的值。
- field,当指定的是直方图字段时,即内容为{"values":[], "counts":[]}时计算的平均值为values*counts/sum(counts)
min,max支持的参数与avg一样
stats支持的参数与avg一样
extended_stats支持额外的参数:
- sigma,用来控制离均值标准方法为多少的需要显示。只能是非负值。
cardinality支持另外的参数:
- precision_threshold,定义一个唯一的计数,低于该计数的计数将接近准确
percentiles支持额外的参数:
- percents指定特殊的百分位。
- keyed,默认是true,将唯一字符串键与单个bucket关联,并将范围作为哈希而不是数组返回
percentile_ranks支持额外的参数:
- values指定特殊的百分位
- keyed,默认是true,将唯一字符串键与单个bucket关联,并将范围作为哈希而不是数组返回
top_hits支持额外的参数:
- from,第一个结果的偏移
- size,每个bucket返回的最匹配记录的最大数。
- sort,指定排序。
支持的子section有
- highlighting
- explain
- named queries
- search fields
- source filtering
- stored fields
- script fields
- doc value fields
- include versions
- include sequence number and primary terms
geo_bounds支持的额外参数:
- wrap_longitude,指定是否允许边界框与国际日期线重叠,默认是true
scripted_metric支持的参数
- init_script,在收集文件之前执行。允许聚合安装初始状态
- map_script,每个文档收集时执行。必选项。
- combine_script,文档收集完成后每个分片立即执行。必选项
- reduce_script,所有分片返回结果后,协调节点执行。必选项
- params。可选项。作为变量传给init_script,map_script,combine_script.
2.2 buckets聚合
filter | 在当前的文档集合上下文中定义一个匹配指定过滤器的所有文档bucket。通过用于减小当前聚合上下文到一个指定的文档集合中。 |
filters | 定义多个bucket聚合,每个bucket与一个过滤器匹配。每个bucket收集匹配相关的过滤器的文档。 |
terms | 基于源的多个bucket值的聚合,每个bucket是动态创建的,每个是唯一值。 |
range | 基于源的多个bucket值的聚合,通过from,to定义区间范围,to值不包含 |
date_range | 用于日期值的区间聚合,与range的区别在于from,to的值可以使用日期数学表达式计算的值。 |
ip_range | 与date_range相似,专门用于ip地址的。除了from,to来定义区间,也可以使用mask来定义 |
missing | 单个bucket聚合。在缺少字段值时在当前的文档上下文中创建所有文档的一个bucket。 |
histogram | 多个bucket值的聚合,应用于数值。 |
date_histogram | 与histogram相似,用于日期类型数据 |
geo_distance | 多bucket聚合,用于geo_point类型字段,与range相似。 |
geohash_grid | 多bucket聚合,根据geo_point和geo_shape值分组到表示网格的bucket中。 |
global | 定义在搜索执行上下文内所有文档的一个bucket. |
significant_terms | 返回感兴趣的或者经常出现的词条。 |
sampler | 用于限制子聚合处理最高分文档的采样。 |
children | 一个特殊的单bucket聚合。选择指定类型,在join字段中定义的子文档。 |
nested | 一个特殊的单bucket聚合,使得能够聚合嵌套文档。 |
reverse_nested | 一个特殊的单bucket聚合,在嵌套文档中聚合父文档。必须定义在nested聚合中 |
histogram支持的参数有
- interval,必须是一个正数值。
- min_doc_count,指定区间内最少的文档个数。
date_histogram支持的参数:
- calendar_interval,支持的值有minute(1m),hour(1h),day(1d),week(1w),month(1M),quartar(1q),year(1y)
- fixed_interval,支持的单位有ms,s,m,h,d
geo_distance支持的参数
- field,指定用于聚合的字段
- origin指定原点
- ranges,通过from,to指定元素区间
- unit,默认单位是m,也支持mi(miles),in(inches),yd(yards),km(kilometers),cm(centimeters),mm(millimeter)
- distance_type,指定距离计算模式。支持的值有arc,plane。默认的是arc
geohash_grid支持的参数有
- precision,设置精度。
nested支持的参数
- path,最外层文档
2.3 pipeline聚合
有两种类型
- Parent,由父聚合输出提供,来计算新bucket或者对已经存在的bucket添加新聚合的一类聚合族
- Sibling,由兄弟聚合的输出提供,作为兄弟聚合在同一层计算聚合。
更多推荐
已为社区贡献11条内容
所有评论(0)