Back to Elasticsearch

Sum bucket aggregation [search-aggregations-pipeline-sum-bucket-aggregation]

docs/reference/aggregations/search-aggregations-pipeline-sum-bucket-aggregation.md

9.4.03.0 KB
Original Source

Sum bucket aggregation [search-aggregations-pipeline-sum-bucket-aggregation]

A sibling pipeline aggregation which calculates the sum across all buckets of a specified metric in a sibling aggregation. The specified metric must be numeric and the sibling aggregation must be a multi-bucket aggregation.

Syntax [_syntax_24]

A sum_bucket aggregation looks like this in isolation:

js
{
  "sum_bucket": {
    "buckets_path": "the_sum"
  }
}

% NOTCONSOLE

$$$sum-bucket-params$$$

Parameter NameDescriptionRequiredDefault Value
buckets_pathThe path to the buckets we wish to find the sum for (see buckets_path Syntax for more details)Required
gap_policyThe policy to apply when gaps are found in the data (see Dealing with gaps in the data for more details)Optionalskip
formatDecimalFormat pattern for theoutput value. If specified, the formatted value is returned in the aggregation’svalue_as_string property.Optionalnull

The following snippet calculates the sum of all the total monthly sales buckets:

console
POST /sales/_search
{
  "size": 0,
  "aggs": {
    "sales_per_month": {
      "date_histogram": {
        "field": "date",
        "calendar_interval": "month"
      },
      "aggs": {
        "sales": {
          "sum": {
            "field": "price"
          }
        }
      }
    },
    "sum_monthly_sales": {
      "sum_bucket": {
        "buckets_path": "sales_per_month>sales" <1>
      }
    }
  }
}

% TEST[setup:sales]

  1. buckets_path instructs this sum_bucket aggregation that we want the sum of the sales aggregation in the sales_per_month date histogram.

And the following may be the response:

console-result
{
   "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
               }
            }
         ]
      },
      "sum_monthly_sales": {
          "value": 985.0
      }
   }
}

% TESTRESPONSE[s/"took": 11/"took": $body.took/] % TESTRESPONSE[s/"_shards": .../"_shards": $body._shards/] % TESTRESPONSE[s/"hits": .../"hits": $body.hits/]