Min Bucket Aggregationedit

Warning

This functionality is experimental and may be changed or removed completely in a future release.

A sibling pipeline aggregation which identifies the bucket(s) with the minimum value of a specified metric in a sibling aggregation and outputs both the value and the key(s) of the bucket(s). The specified metric must be numeric and the sibling aggregation must be a multi-bucket aggregation.

Syntaxedit

A max_bucket aggregation looks like this in isolation:

{
    "min_bucket": {
        "buckets_path": "the_sum"
    }
}

Table 4. min_bucket Parameters

Parameter Name

Description

Required

Default Value

buckets_path

The path to the buckets we wish to find the minimum for (see the section called “buckets_path Syntaxedit” for more details)

Required

gap_policy

The policy to apply when gaps are found in the data (see the section called “Dealing with gaps in the dataedit” for more details)

Optional, defaults to skip

format

format to apply to the output value of this aggregation

Optional, defaults to null


The following snippet calculates the minimum of the total monthly sales:

POST /sales/_search
{
    "size": 0,
    "aggs" : {
        "sales_per_month" : {
            "date_histogram" : {
                "field" : "date",
                "interval" : "month"
            },
            "aggs": {
                "sales": {
                    "sum": {
                        "field": "price"
                    }
                }
            }
        },
        "min_monthly_sales": {
            "min_bucket": {
                "buckets_path": "sales_per_month>sales" 
            }
        }
    }
}

buckets_path instructs this max_bucket aggregation that we want the minimum value of the sales aggregation in the sales_per_month date histogram.

And the following may be the response:

{
   "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
               }
            }
         ]
      },
      "min_monthly_sales": {
          "keys": ["2015/02/01 00:00:00"], 
          "value": 60.0
      }
   }
}

keys is an array of strings since the minimum value may be present in multiple buckets