zoukankan      html  css  js  c++  java
  • aggregations 详解1(概述)

    aggregation分类

    aggregations —— 聚合,提供了一种基于查询条件来对数据进行分桶、计算的方法。有点类似于 SQL 中的 group by 再加一些函数方法的操作。

    聚合可以嵌套,由此可以组成复杂的操作(Bucketing聚合可以包含sub-aggregation)。

    聚合整体上可以分为 3 类:

    1. Bucketing:桶分聚合:

    • 此类聚合执行的是对文档分组的操作,把满足相关特性的文档分到一个桶里,即桶分。输出结果往往是一个个包含多个文档的桶。
    • 此类聚合会有一个关键字(field、script),以及一些桶分(分组)的判断条件。执行聚合操作时候,文档会判断每一个分组条件,如果满足某个,该文档就会被分为该组(fall in)。

    2. Metric:指标聚合:

    • 此类聚合是对文档进行一些权值计算(比如求所有文档某个字段的max值)。输出结果往往是文档的权值,相当于为文档添加了一些统计信息。
    • 此类聚合基于特定字段(field)或脚本值(generated using scripts),计算聚合中文档的权值。

    3. Pipeline:管道聚合:

    • 对其它聚合操作的输出及其关联指标进行聚合。
    • 此类聚合的作用对象往往是桶,而不是文档,是一种后期对每个分桶的一些计算操作。

    应用场景

    对于 3 中聚合,常见的应用场景如下流程:

    buckets 聚合对文档进行必要的归类(桶分) ——> metric 聚合对每个桶进行一些额外的信息计算(如:max) ——> pipeline 聚合针对所有桶做一些桶层面的统计或计算

    应用示例:

    {
        "aggs" : {
            "sales_per_month" : {
                "date_histogram" : {              // bucket 聚合,按照月份进行分桶,每个月的归属一个桶
                    "field" : "date",
                    "interval" : "month"
                },
                "aggs": {
                    "sales": {
                        "sum": {                       // metric 聚合,对每个桶类的 price 求和,即每月的销售额
                            "field": "price"
                        }
                    }
                }
            },
            "max_monthly_sales": {
                "max_bucket": {                 // pipeline 聚合,求所有桶中销售额 sales 最大的值
                    "buckets_path": "sales_per_month>sales" 
                }
            }
        }
    }

    aggregation结构

    聚合可以是父子(嵌套)关系聚合,buckets 聚合作为父,metric 聚合作为子。

    聚合也可以是兄弟关系聚合,buckets 聚合在前,pipeline 聚合在后。

    结构如下:

    "aggregations" : {                                //定义聚合对象,也可用 "aggs"
          "<aggregation_name>" : {                    //聚合的名称,用户自定义
              "<aggregation_type>" : {                //聚合类型,比如 "histogram"
                  <aggregation_body>                  //每个聚合类型都有其自己的结构定义
              }
              [,"meta" : {  [<meta_data_body>] } ]?
              [,"aggregations" : { [<sub_aggregation>]+ } ]?    //可以定义多个 sub-aggregation
          }
          [,"<aggregation_name_2>" : { ... } ]*       //定义额外的多个平级 aggregation,只有 Bucketing 类型才有意义
    }
  • 相关阅读:
    tensorflow2.0——手写数据集预测(多元逻辑回归)
    tensorflow2.0——鸢尾花数据集的一元分类
    tensorflow2.0——实现波士顿房价数据集的分类问题
    tensorflow2.0——代码实现一元逻辑回归
    tensorflow2.0——交叉熵损失函数
    tensorflow2.0——波士顿房价数据预测(3)
    子序列计数
    HDU 5687 Problem C
    linux中巧用ctrl-z后台运行程序
    Failed to set MokListRT: Invalid Parameter Something as gone seriously wrong: import_mok_state() failed: Invalid Parameter
  • 原文地址:https://www.cnblogs.com/licongyu/p/5499388.html
Copyright © 2011-2022 走看看