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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《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

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
资源调度
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(7)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(7)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(10)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(10)
|
编解码 算法
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(6)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(6)
|
存储
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(3)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(3)
|
数据可视化 索引
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(13)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(13)
|
存储 自然语言处理 关系型数据库
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(14)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(14)
|
存储
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(5)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(5)
|
存储
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(8)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(8)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(12)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(12)
|
存储 索引
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(9)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(9)