平均桶聚合

编辑

一个同级管道聚合,用于计算同级聚合中指定指标的平均值。指定的指标必须是数字,并且同级聚合必须是多桶聚合。

语法

编辑
"avg_bucket": {
  "buckets_path": "sales_per_month>sales",
  "gap_policy": "skip",
  "format": "#,##0.00;(#,##0.00)"
}

参数

编辑
buckets_path
(必需,字符串)要计算平均值的桶的路径。有关语法,请参阅 buckets_path 语法
gap_policy
(可选,字符串)在数据中发现间隙时应用的策略。有关有效值,请参阅 处理数据中的间隙。默认为 skip
format
(可选,字符串)输出值的 DecimalFormat 模式。如果指定,则格式化的值将在聚合的 value_as_string 属性中返回。

响应体

编辑
value
(浮点数)buckets_path 中指定的指标的平均值。
value_as_string
(字符串)聚合的格式化输出值。仅当请求中指定了 format 时,才会提供此属性。

示例

编辑

以下 avg_monthly_sales 聚合使用 avg_bucket 来计算每月平均销售额

resp = client.search(
    size=0,
    aggs={
        "sales_per_month": {
            "date_histogram": {
                "field": "date",
                "calendar_interval": "month"
            },
            "aggs": {
                "sales": {
                    "sum": {
                        "field": "price"
                    }
                }
            }
        },
        "avg_monthly_sales": {
            "avg_bucket": {
                "buckets_path": "sales_per_month>sales",
                "gap_policy": "skip",
                "format": "#,##0.00;(#,##0.00)"
            }
        }
    },
)
print(resp)
const response = await client.search({
  size: 0,
  aggs: {
    sales_per_month: {
      date_histogram: {
        field: "date",
        calendar_interval: "month",
      },
      aggs: {
        sales: {
          sum: {
            field: "price",
          },
        },
      },
    },
    avg_monthly_sales: {
      avg_bucket: {
        buckets_path: "sales_per_month>sales",
        gap_policy: "skip",
        format: "#,##0.00;(#,##0.00)",
      },
    },
  },
});
console.log(response);
POST _search
{
  "size": 0,
  "aggs": {
    "sales_per_month": {
      "date_histogram": {
        "field": "date",
        "calendar_interval": "month"
      },
      "aggs": {
        "sales": {
          "sum": {
            "field": "price"
          }
        }
      }
    },
    "avg_monthly_sales": {
// tag::avg-bucket-agg-syntax[]               
      "avg_bucket": {
        "buckets_path": "sales_per_month>sales",
        "gap_policy": "skip",
        "format": "#,##0.00;(#,##0.00)"
      }
// end::avg-bucket-agg-syntax[]               
    }
  }
}

avg_bucket 配置的开始。注释不是示例的一部分。

avg_bucket 配置的结束。注释不是示例的一部分。

该请求返回以下响应

{
  "took": 11,
  "timed_out": false,
  "_shards": ...,
  "hits": ...,
  "aggregations": {
    "sales_per_month": {
      "buckets": [
        {
          "key_as_string": "2015/01/01 00:00:00",
          "key": 1420070400000,
          "doc_count": 3,
          "sales": {
            "value": 550.0
          }
        },
        {
          "key_as_string": "2015/02/01 00:00:00",
          "key": 1422748800000,
          "doc_count": 2,
          "sales": {
            "value": 60.0
          }
        },
        {
          "key_as_string": "2015/03/01 00:00:00",
          "key": 1425168000000,
          "doc_count": 2,
          "sales": {
            "value": 375.0
          }
        }
      ]
    },
    "avg_monthly_sales": {
      "value": 328.33333333333333,
      "value_as_string": "328.33"
    }
  }
}