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,由兄弟聚合的输出提供,作为兄弟聚合在同一层计算聚合。

 

 

 

 

 

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐