管道聚合


管道聚合处理其他聚合产生的输出,而不是处理文档集,它将信息添加到输出树。存在许多不同类型的管道聚合,这些聚合从其他的聚合中计算不同的信息,这些聚合主要分成两类:

  • 双亲:与双亲聚合输出一起提供的一系列管道聚合,可以用于计算添加到已存在桶的新的桶或聚合。
  • 兄弟:与兄弟聚合输出一起提供的管道聚合,用于计算与兄弟聚合处于相同级别的新聚合。

通过使用buckets_path参数指明所需度量的路径,管道聚合可以引用需要执行计算的聚合。

管道聚合没有子聚合,不过根据类型,它可以引用bucks_path中的其他的管道,从而使管道聚合链化。

因为管道聚合只添加到输出,当链化聚合时,每个管道聚合的输出将会包含在最终输出中。

1 buckets_path 语法

大多数的管道聚合将其他聚合作为输入。输入聚合通过buckets_path参数定义。

AGG_SEPARATOR = ‘>’ ;
METRIC_SEPARATOR = ‘.’ ;
AGG_NAME = ;
METRIC = <the name of the metric (in case of multi-value metrics aggregation)> ;
PATH = <AGG_NAME> [ <AGG_SEPARATOR>, <AGG_NAME> ]* [ <METRIC_SEPARATOR>, ] ;

路径相对于管道聚合所在的位置,这些路径不是绝对路径,并且不能回到聚合树上。

{"aggs": {"my_date_histo": {"date_histogram": {"field": "timestamp","interval": "day"},"aggs": {"the_sum": {"sum": {"field": "lemmings"}},"the_movavg": {"moving_avg": {"buckets_path": "the_sum"}}}}}
}

note:移动平均数内嵌于日期柱状图之中,引用兄弟度量"the_sum"。
note:buckets_path通过相对路径"the_sum"引用度量。

buckets_path也可以用于兄弟管道聚合,此聚合邻近一系列桶聚合,而不是内嵌于它们。

{"aggs": {"sales_per_month": {"data_histogram": {"filed": "date","interval": "month"},"aggs": {"sales": {"sum": {"field": "price"}}}},"max_monthly_sales": {"max_bucket": {"buckets_path": "sales_per_month>sales"}}}
}

note:max_bucket聚合使用buckets_path指定镶嵌在兄弟聚合中的度量。
note:buckets_path指示sales_per_month日期柱状图聚合之中用于获取sales聚合最大值的最大桶聚合。

2 特定路径

除了路径到度量,buckets_path还可以使用特定"_count"路径。这指示管道聚合将文档计数用作输入。

{"aggs": {"my_date_histo": {"date_histogram": {"field": "timestamp","interval": "day"},"aggs": {"the_movavg": {"moving_avg": {"buckets_path": "_count" }}}}}
}

note:可以根据每个桶的文档计数来计算移动平均值,而不使用特定度量。
note:通过使用_count取代度量名称,可以计算树状图中文档计数的移动平均值。

buckets_path还可以使用"_bucket_count"与多桶聚合的路径来使用由管道聚合返回的桶数,而不是使用度量。

{"size": 0,"aggs": {"histo": {"date_histogram": {"field": "date","interval": "day"},"aggs": {"categories": {"terms": {"field": "category"}},"min_bucket_selector": {"bucket_selector": {"buckets_path": {"count": "categories._bucket_count"},"script": {"source": "params.count != 0"}}}}}}
}

note:bucket_selector用于筛掉无内部字段值聚合桶的桶。
note:通过使用_bucket_count取代度量名称,可以将不包含categories聚合桶的histo桶过滤掉。

3 处理聚合名称中的点

为了处理名称中带有点的聚合或度量可以使用以下语法:

"buckets_path": "my_percentile[99.9]"

4 处理数据中的缺口

真实世界中的数据常常嘈杂且具有缺口(数据不存在的位置)。
这可能会有多种原因,常见的有:

  • 落入桶中的文档没有包含指定字段
  • 没有文档匹配一个或多个桶的查询
  • 被计算的度量值不能生成值,很可能时因为其他依赖的桶缺失值。一些管道聚合具有需要被满足的特殊需求。(例如,导数不能计算度量的第一个值,因为没有过去的值,HoltWinters移动平均值在开始计算前需要“升温”数据等)

缺口策略用于在缺口或确实数据遭遇时,通知对应管道聚合应做的行为。所有的管道聚合接收gap_policy参数。

当前有两种策略可以选择:

  • skip,此选项以桶不存在缺失数据来对待缺口。它将会跳过桶并且使用下一个可用值进行计算。
  • insert_zeros,此选项会使用零值来替换缺失,管道聚合则会照常计算。

翻译源:Elasticsearch 6.4 文档

Elasticsearch 管道聚合相关推荐

  1. Elasticsearch(三)——Es搜索(简单使用、全文查询、复合查询)、地理位置查询、特殊查询、聚合操作、桶聚合、管道聚合

    Elasticsearch(三)--Es搜索(简单使用.全文查询.复合查询).地理位置查询.特殊查询.聚合操作.桶聚合.管道聚合 一.Es搜索 这里的 Es 数据博主自己上网找的,为了练习 Es 搜索 ...

  2. Elasticsearch Pipeline Aggregation管道聚合详解

    文章目录 1. buckets_path 2. 特殊路径 3. Bucket Sort Aggregation 4. Avg Bucket Aggregation 5. Max Bucket Aggr ...

  3. (转)Elasticsearch 聚合查询、桶聚合、管道聚合及复合查询

    转自: https://blog.csdn.net/zx711166/article/details/81906881 聚合查询 聚合是一种基于查询条件对数据进行分桶.计算的方法. 聚合可以嵌套,由此 ...

  4. elasticsearch(7)聚合统计-分组聚合

    原文:https://blog.csdn.net/sz85850597/article/details/82858831 elasticsearch(7)聚合统计-分组聚合 2018年09月26日 2 ...

  5. elasticsearch aggregations_Elasticsearch聚合的嵌套桶如何排序

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:原创文章分类汇总及配套源码,涉及Java.Docker.K8S.Devops等 关于嵌套桶 在 ...

  6. elasticsearch实现类似京东的商品搜索效果(elasticsearch动态聚合)

    用到京东的对其搜索应该不会陌生,其搜索也是使用elasticsearch完成的,下图为一个搜索效果图: 搜索筛选条件会根据查询返回的结果动态变化,要实现这个功能就要用到elasticsearch的聚合 ...

  7. ES聚合查询详解(四):管道聚合

    前言 前面已经介绍了指标聚合和桶聚合的使用,本文继续介绍管道聚合. 一.简介 管道聚合 Pipeline aggregations 官方文档:Pipeline Aggregations 管道聚合主要用 ...

  8. Elasticsearch(9) --- 聚合查询(Bucket聚合)

    Elasticsearch(9) --- 聚合查询(Bucket聚合) 系统小说 www.kuwx.net 上一篇讲了Elasticsearch聚合查询中的Metric聚合:Elasticsearch ...

  9. Pipeline aggregations管道聚合-Sibling-1

    Pipeline aggregations管道聚合 管道聚合工作于其他聚合产生的输出结果而不是文档集,用于向输出树添加信息 按管道聚集运算来源分类,管道聚集可以分为基于父聚集结果和基于兄弟聚集结果两类 ...

最新文章

  1. 小程序获取form_id 与 小程序获取openid
  2. 操作系统(十一)线程的概念和特点
  3. OC__part11.1
  4. matlab把符号数,Matlab 符号与数值之间的转换
  5. 我的第一程序语言python
  6. LA 4123 (计数 递推) Glenbow Museum
  7. 网信办拟规定:平台未经用户同意不得强制订阅关注账号;Twitter回应大范围宕机;Krita 4.4.0发布|极客头条
  8. Typora免费版(Typora最后一个版本下载)
  9. FCFS,SSTF,SCAN,FIFO,LRO
  10. 多种方法在Markdown加入上划线、中划线、下划线
  11. 目标跟踪入门:使用OpenCV实现质心跟踪
  12. Java 可用于比较与排序的lambda表达式和comparing方法
  13. 19 01 18 dango 模型
  14. java递归多层(多节点)xml和map互相转换
  15. cmd 切换到 指定目录
  16. mysql数据库巡检方案_Mysql数据库巡检
  17. 确保精确度的五轴机床、类型与行业发展的新曙光
  18. 电影票网上订购平台系统
  19. 1461 Beads
  20. ctf (easy_eval)

热门文章

  1. python-哪些是可迭代对象?哪些是迭代器?迭代器和可迭代对象的区别——可迭代对象在遍历时不会发生消耗,但是迭代器会
  2. 还在用递归来计算菲波那契数列?你Time Limit Exceeded了
  3. 一个HashMap能跟面试官扯上半个小时
  4. 如何用最快速高效的算法来给一堆袜子配对?
  5. 【瑞模网】ue4 摩尔纹 远处模型闪烁问题
  6. java iterator set,Java HashSet iterator()方法与示例
  7. Android 浏览器打开APP中的Activity
  8. Linux系统中解决没有中文输入法
  9. 表情包的gif怎么制作?一招教你快速做gif表情
  10. 有必要等arm版mac_基于 ARM 芯片的苹果 Mac,真是你想要的?