[[breaking_60_aggregations_changes]]
=== Aggregations changes

==== Deprecated `pattern` element of include/exclude for terms aggregations has been removed

The `include` and `exclude` options of `terms` aggregations used to accept a
sub `pattern` object which has been removed. The pattern should now be directly
put as a value of the `include` and `exclude` fields. For instance, the below
`terms` aggregation:

[source,js]
--------------------------------------------------
POST /twitter/_search?size=0
{
    "aggs" : {
        "top_users" : {
            "terms" : {
                "field" : "user",
                "include": {
                  "pattern": "foo.*"
                },
                "exclude": {
                  "pattern": ".*bar"
                }
            }
        }
    }
}
--------------------------------------------------
// CONSOLE
// TEST[skip: uses old unsupported syntax]

should be replaced with:

[source,js]
--------------------------------------------------
POST /twitter/_search?size=0
{
    "aggs" : {
        "top_users" : {
            "terms" : {
                "field" : "user",
                "include": "foo.*",
                "exclude": ".*bar"
            }
        }
    }
}
--------------------------------------------------
// CONSOLE
// TEST[setup:twitter]

==== Numeric `to` and `from` parameters in `date_range` aggregation are interpreted according to `format` now

Numeric `to` and `from` parameters in `date_range` aggregations used to always be interpreted as `epoch_millis`,
making other numeric formats like `epoch_seconds` unusable for numeric input values. 
Now we interpret these parameters according to the `format` of the target field. 
If the `format` in the mappings is not compatible with the numeric input value, a compatible 
`format` (e.g. `epoch_millis`, `epoch_second`) must be specified in the `date_range` aggregation, otherwise an error is thrown.
