带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(11)

简介: 带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(11)

《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.21.Aggregations(10) https://developer.aliyun.com/article/1229231


6、管道聚合 pipeline

 

1)基础用法

 

Elasticsearch 通过管道聚合支持对聚合分析的结果进行再次聚合分析。大多数管道聚合需要另一个聚合作为它的输入,输入聚合通过 bucket_path 参数定义:


l 聚合分隔符为 >

l 指标分隔符为 .

l 聚合名为<聚合的名称>

l 指标为<聚合的指标>

l 路径为<聚合名>[<聚合分隔符><聚合名>]*[<指标分隔符><指标>]

 

例如:路径 "mybucket>myavg",会将 myavg 中的平均值指标作为 mybucket 分组聚合的输入。

 

pipeline 分析的结果会输出到原结果进行汇总,根据位置的不同分为两类:

 

Sibling 兄弟聚合,结果和现有分析结果同级。例如:Max,Min,Avg 及 Sum Bucket

Stats, Extened Status Bucket,Percentiles Bucket。

 

Parent 父类聚合,结果内嵌到现有的聚合分析结果之中。例如:Derivative(求导)、Cumultive Sum(累计求和)、Moving Function(滑动窗口)。

 

2)Sibling 兄弟聚合

 

Sibling 兄弟聚合:例如要对每个品牌的平均售价再求平均,在下面我们的 buckets_path 定义为一个从 aggs 根开始的一个完整的父聚合的路径。我们通过其名为 terms_bucket 的父聚合terms,引用了名为 avg_bucket 的同级聚合。 因此,目标汇总的完整路径为terms_bucket>avg_bucket。

 

GET order/_search
{
  "aggs": {
    "terms_bucket": {
      "terms": {
        "field": "brand",
        "size": 3
      },
      "aggs": {
        "avg_bucket": {
          "avg": {
            "field": "price"
          }
        }
      }    
    },
    "avgofbrandprice":{
      "avg_bucket": {
        "buckets_path": "terms_bucket>avg_bucket"
      }
    }
  }
}
//聚合结果
{
......
"aggregations" : {
    "terms_bucket" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 0,
      "buckets" : [
        {
          "key" : "HUAWEI",
          "doc_count" : 4,
          "avg_bucket" : {
            "value" : 8734.25
          }
        },
        {
          "key" : "Apple",
          "doc_count" : 3,
          "avg_bucket" : {
            "value" : 8991.85
          }
        }
      ]
    },
    "avgofbrandprice" : {
      "value" : 8863.05
    }
  }
}

3)Parent 父类聚合

 

Parent 父类聚合:例如根据产品价格做直方图统计,在每个统计桶中做平均值得累加和统计

 

GET order/_search
{ 
  "aggs": {
    "my_histogram": {
      "histogram": {
        "field": "price",
        "interval": 1000
      },
      "aggs": {
        "avg_bucket": {
          "avg": {
            "field": "price"
          }
        },
        "my_cumulative_sum":{
          "cumulative_sum": {
            "buckets_path": "avg_bucket"
          }
        }
      }
    }
  }
}
//聚合结果为
  "aggregations" : {
    "my_histogram" : {
      "buckets" : [
        {
          "key" : 7000.0,
          "doc_count" : 2,
          "avg_bucket" : {
            "value" : 7924.51
          },
          "my_cumulative_sum" : {
            "value" : 7924.51
          }
        },
        {
          "key" : 8000.0,
          "doc_count" : 2,
          "avg_bucket" : {
            "value" : 8676.869999999999
          },
          "my_cumulative_sum" : {
            "value" : 16601.379999999997
          }
        }
        {
          "key" : 9000.0,
          "doc_count" : 2,
          "avg_bucket" : {
            "value" : 9987.77
          },
          "my_cumulative_sum" : {
            "value" : 26589.149999999998
          }
        }
      ]
    }
  }

《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.21.Aggregations(12) https://developer.aliyun.com/article/1229228

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。 &nbsp;
相关文章
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
2765 0
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
|
开发框架 安全 .NET
网络空间安全之一个WH的超前沿全栈技术深入学习之路(1-1):渗透测试行业术语扫盲)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(1-1):渗透测试行业术语扫盲)作者——LJS
|
NoSQL 关系型数据库 MySQL
当Redis与MySQL数据一致性校验中Redis数据量小于MySQL时的全量查询处理方法
保持Redis和MySQL之间的数据一致性是一个需要细致规划和持续维护的过程。通过全量数据同步、建立增量更新机制,以及定期执行数据一致性校验,可以有效地管理和维护两者之间的数据一致性。此外,利用现代化的数据同步工具可以进一步提高效率和可靠性。
155 6
|
机器学习/深度学习 人工智能 自然语言处理
|
Web App开发 前端开发
id和class选择器
id和class选择器。
142 3
|
前端开发 JavaScript Java
图书管理系统的开发与设计(论文+源码)_kaic
随着科学技术的快速发展,尤其是计算机技术的突飞猛进,计算机技术普及到日常生活、学习生活的方方面面。由此想到学校的相对于传统的图书管理系统,帮助到学校的读者和学校的图书管理员的系统。提升图书管工作人员的效率,满足学校学生对于图书管理系统的需求,进而构思相关系统。 本文阐述了开发本校图书馆管理系统的最基本设计方法,阐述了应用系统的设计观念。对部分功能进行分析和设计。本图书管理系统,能够帮助本校学生和管理员通过线上直接对接。本项目软件架构选择B/S模式,总体功能模块运用自顶向下的分层思想。系统设计主要包括首页管理、读者管理、图书分类管理、图书信息管理、图书归还管理、图书借阅管理、超期提醒管理、留言板
|
SQL NoSQL Java
分布式锁实现原理与最佳实践(1)
分布式锁实现原理与最佳实践
239 0
|
Java Android开发
Adroid RecyclerView adapter 封装
Adroid RecyclerView adapter 封装
|
存储 缓存 人工智能
《跨端智能在蚂蚁的应用-青壁》演讲视频&文字版
《跨端智能在蚂蚁的应用-青壁》演讲视频&文字版
261 0

热门文章

最新文章