[discrete] [[breaking_70_aggregations_changes]] === Aggregations changes //NOTE: The notable-breaking-changes tagged regions are re-used in the //Installation and Upgrade Guide //tag::notable-breaking-changes[] // end::notable-breaking-changes[] [discrete] [[removed-global-ordinals-hash-and-global-ordinals-low-cardinality-terms-agg]] ==== Deprecated `global_ordinals_hash` and `global_ordinals_low_cardinality` execution hints for terms aggregations have been removed These `execution_hint` are removed and should be replaced by `global_ordinals`. [discrete] [[search-max-buckets-cluster-setting]] ==== `search.max_buckets` in the cluster setting The dynamic cluster setting named `search.max_buckets` now defaults to 10,000 (instead of unlimited in the previous version). Requests that try to return more than the limit will fail with an exception. [discrete] [[missing-option-removed-composite-agg]] ==== `missing` option of the `composite` aggregation has been removed The `missing` option of the `composite` aggregation, deprecated in 6.x, has been removed. `missing_bucket` should be used instead. [discrete] [[replace-params-agg-with-state-context-variable]] ==== Replaced `params._agg` with `state` context variable in scripted metric aggregations The object used to share aggregation state between the scripts in a Scripted Metric Aggregation is now a variable called `state` available in the script context, rather than being provided via the `params` object as `params._agg`. [discrete] [[reduce-script-combine-script-params-mandatory]] ==== Make metric aggregation script parameters `reduce_script` and `combine_script` mandatory The metric aggregation has been changed to require these two script parameters to ensure users are explicitly defining how their data is processed. [discrete] [[percentiles-percentile-ranks-return-null-instead-nan]] ==== `percentiles` and `percentile_ranks` now return `null` instead of `NaN` The `percentiles` and `percentile_ranks` aggregations used to return `NaN` in the response if they were applied to an empty set of values. Because `NaN` is not officially supported by JSON, it has been replaced with `null`. [discrete] [[stats-extended-stats-return-zero-instead-null]] ==== `stats` and `extended_stats` now return 0 instead of `null` for zero docs When the `stats` and `extended_stats` aggregations collected zero docs (`doc_count: 0`), their value would be `null`. This was in contrast with the `sum` aggregation which would return `0`. The `stats` and `extended_stats` aggs are now consistent with `sum` and also return zero.