带你读《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的异同
2974 0
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
|
Kubernetes 安全 数据安全/隐私保护
在K8S上部署可扩展的基于Occlum的安全推理实例
机密计算是指通过在基于硬件的可信执行环境(TEE)中执行计算来保护数据应用中的隐私安全,是目前最火热的隐私保护技术之一。在云上运行TEE应用也得到了云厂商的广泛支持,包括阿里云,微软Azure云,都提供了基于SGX技术的机密安全实例服务。用户可以在这些云上申请带SGX支持的安全实例,然后部署自己的机密安全服务,既可以避免隐私数据泄露,也无需操心繁琐的基础架构层的配置。无论哪种云,最流行的分布式部署
在K8S上部署可扩展的基于Occlum的安全推理实例
|
监控 Cloud Native 容器
基于阿里云容器服务监控 Kubernetes集群GPU指标
### 简介 当您在阿里云容器服务中使用GPU ECS主机构建Kubernetes集群进行AI训练时,经常需要知道每个Pod使用的GPU的使用情况,比如每块显存使用情况、GPU利用率,GPU卡温度等监控信息,本文介绍如何快速在阿里云上构建基于Prometheus + Grafana的GPU监控方案。
17335 0
|
Kubernetes 物联网 数据中心
大规模 IoT 边缘容器集群管理的几种架构 -2-HashiCorp 解决方案 Nomad
大规模 IoT 边缘容器集群管理的几种架构 -2-HashiCorp 解决方案 Nomad
|
5月前
|
Java 数据安全/隐私保护
分享一些Java面向对象的实际案例
Java面向对象案例通过校园管理和电商系统,展现封装、继承、多态的协同:封装保护数据,继承复用代码,多态实现灵活扩展,贴近实际应用,体现OOP核心思想。(238字)
286 0
|
开发框架 安全 .NET
网络空间安全之一个WH的超前沿全栈技术深入学习之路(1-1):渗透测试行业术语扫盲)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(1-1):渗透测试行业术语扫盲)作者——LJS
|
机器学习/深度学习 人工智能 自然语言处理
人工智能的发展现状如何?
【10月更文挑战第16天】人工智能的发展现状如何?
|
前端开发 Java 应用服务中间件
JVM进阶调优系列(1)类加载器原理一文讲透
本文详细介绍了JVM类加载机制。首先解释了类加载器的概念及其工作原理,接着阐述了四种类型的类加载器:启动类加载器、扩展类加载器、应用类加载器及用户自定义类加载器。文中重点讲解了双亲委派机制,包括其优点和缺点,并探讨了打破这一机制的方法。最后,通过Tomcat的实际应用示例,展示了如何通过自定义类加载器打破双亲委派机制,实现应用间的隔离。
|
数据可视化 NoSQL Serverless
现代化 Web 应用构建问题之Serverless架构的Web站点费用计算如何解决
现代化 Web 应用构建问题之Serverless架构的Web站点费用计算如何解决
438 1

热门文章

最新文章

下一篇
开通oss服务