累积和聚合编辑

一种父管道聚合,用于计算父直方图(或 date_histogram)聚合中指定指标的累积和。指定的指标必须是数值型的,并且封闭的直方图必须将 min_doc_count 设置为 0histogram 聚合的默认值)。

语法编辑

一个 cumulative_sum 聚合单独看起来像这样

{
  "cumulative_sum": {
    "buckets_path": "the_sum"
  }
}

表 58. cumulative_sum 参数

参数名称 描述 必需 默认值

buckets_path

我们希望找到其累积和的桶的路径(有关更多详细信息,请参阅 buckets_path 语法

必需

format

输出值的 DecimalFormat 模式。如果指定,则格式化的值将在聚合的 value_as_string 属性中返回

可选

null

以下代码段计算每月总 sales 的累积和

response = client.search(
  index: 'sales',
  body: {
    size: 0,
    aggregations: {
      sales_per_month: {
        date_histogram: {
          field: 'date',
          calendar_interval: 'month'
        },
        aggregations: {
          sales: {
            sum: {
              field: 'price'
            }
          },
          cumulative_sales: {
            cumulative_sum: {
              buckets_path: 'sales'
            }
          }
        }
      }
    }
  }
)
puts response
POST /sales/_search
{
  "size": 0,
  "aggs": {
    "sales_per_month": {
      "date_histogram": {
        "field": "date",
        "calendar_interval": "month"
      },
      "aggs": {
        "sales": {
          "sum": {
            "field": "price"
          }
        },
        "cumulative_sales": {
          "cumulative_sum": {
            "buckets_path": "sales" 
          }
        }
      }
    }
  }
}

buckets_path 指示此累积和聚合使用 sales 聚合的输出进行累积和计算

以下可能是响应

{
   "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
               },
               "cumulative_sales": {
                  "value": 550.0
               }
            },
            {
               "key_as_string": "2015/02/01 00:00:00",
               "key": 1422748800000,
               "doc_count": 2,
               "sales": {
                  "value": 60.0
               },
               "cumulative_sales": {
                  "value": 610.0
               }
            },
            {
               "key_as_string": "2015/03/01 00:00:00",
               "key": 1425168000000,
               "doc_count": 2,
               "sales": {
                  "value": 375.0
               },
               "cumulative_sales": {
                  "value": 985.0
               }
            }
         ]
      }
   }
}