[[breaking-changes-7.10]]
== Breaking changes in 7.10
++++
<titleabbrev>7.10</titleabbrev>
++++

This section discusses the changes that you need to be aware of when migrating
your application to {es} 7.10.

See also <<release-highlights>> and <<es-release-notes>>.

// * <<breaking_710_blah_changes>>
// * <<breaking_710_blah_changes>>

//NOTE: The notable-breaking-changes tagged regions are re-used in the
//Installation and Upgrade Guide

//tag::notable-breaking-changes[]

[discrete]
[[breaking_710_security_changes]]
=== Authentication changes

[[api-keys-require-name-property]]
.API keys now require a `name` property.
[%collapsible]
====
*Details* +
The `name` property is now required to create or grant an API key.

[source,js]
----
{
    "...": "...",
    "api_key": {
      "name": "key-1"
    }
}
----
// NOTCONSOLE

*Impact* +
To avoid errors, specify the `name` property when creating or granting API keys.
====

[discrete]
[[breaking_710_indices_changes]]
=== Indices changes

[[bc-deprecate-rest-api-access-to-system-indices]]
.REST API access to system indices is deprecated.
[%collapsible]
====
*Details* +
We are deprecating REST API access to system indices. Most REST API requests
that attempt to access system indices will return the following deprecation
warning:

[source,text]
----
this request accesses system indices: [.system_index_name], but in a future
major version, direct access to system indices will be prevented by default
----

The following REST API endpoints access system indices as part of their
implementation and will not return the deprecation warning:

* `GET _cluster/health`
* `GET {index}/_recovery`
* `GET _cluster/allocation/explain`
* `GET _cluster/state`
* `POST _cluster/reroute`
* `GET {index}/_stats`
* `GET {index}/_segments`
* `GET {index}/_shard_stores`
* `GET _cat/[indices,aliases,health,recovery,shards,segments]`

*Impact* +
To avoid deprecation warnings, do not use unsupported REST APIs to access system
indices.
====


[discrete]
[[breaking_710_java_changes]]
=== Java changes

[[supplier-searchlookup-arg]]
.The `MappedFieldType#fielddataBuilder` method now accepts a `Supplier<SearchLookup>` argument.
[%collapsible]
====
*Details* +
To support future feature development, the existing
`MappedFieldType#fielddataBuilder` method now accepts a new
`Supplier<SearchLookup>` argument.
 
*Impact* +
If you develop or maintain a mapper plugin, update your implementation of the
`MappedFieldType#fielddataBuilder` method to accommodate the new signature.
====

[discrete]
[[breaking_710_ml_changes]]
=== Machine learning changes

[[ml-allow-no-deprecations]]
.The `allow_no_jobs` and `allow_no_datafeeds` API parameters are deprecated.
[%collapsible]
====
*Details* +
The `allow_no_jobs` and `allow_no_datafeeds` parameters in {ml} APIs are
deprecated in favor of `allow_no_match`. The old parameters are still accepted
by the APIs but a deprecation warning is emitted when the old parameter name is
used in the request body or as a request parameter. High-level REST client
classes now send the new `allow_no_match` parameter.

*Impact* +
To avoid deprecation warnings, use the `allow_no_match` parameter.
====

[discrete]
[[breaking_710_mapping_changes]]
=== Mapping changes

[[mapping-boosts]]
.The `boost` parameter on field mappings has been deprecated.
[%collapsible]
====
*Details* +
Index-time boosts have been deprecated since the 5.x line, but it is still possible
to declare field-specific boosts in the mappings.  This is now deprecated as well,
and will be removed entirely in 8.0.0.  Mappings containing field boosts will continue
to work in 7.x but will emit a deprecation warning.

*Impact* +
The `boost` setting should be removed from templates and mappings. Use boosts
directly on queries instead.
====

[discrete]
[[breaking_710_networking_changes]]
=== Networking changes

[keep-idle-and-keep-internal-limits]
.The `*.tcp.keep_idle` and `*.tcp.keep_interval` settings are now limited to `300` seconds.
[%collapsible]
====
*Details* +
The `{network,transport,http}.tcp.keep_idle` and
`{network,transport,http}.tcp.keep_interval` settings now have a maximum
value of `300` seconds, equivalent to 5 minutes.

*Impact* +
If specified, ensure the `{network,transport,http}.tcp.keep_idle` and
`{network,transport,http}.tcp.keep_interval` settings do not exceed `300`
seconds. Setting `{network,transport,http}.tcp.keep_idle` or
`{network,transport,http}.tcp.keep_interval` to a value greater than `300`
seconds in `elasticsearch.yml` will result in an error on startup.
====

[discrete]
[[breaking_710_search_changes]]
=== Search changes

[[max-doc-value-field-search-limits]]
.The `index.max_docvalue_fields_search` setting now limits doc value fields returned by `inner_hits` or the `top_hits` aggregation.
[%collapsible]
====
*Details* +
The `index.max_docvalue_fields_search` setting limits the number of doc value
fields retrieved by a search. Previously, this setting applied only to doc value
fields returned by the `docvalue_fields` parameter in a top-level search. The
setting now also applies to doc value fields returned by an `inner_hits` section
or `top_hits` aggregation.

*Impact* +
If you use `inner_hits` or the `top_hits` aggregation, ensure
`index.max_docvalue_fields_search` is configured correctly for your use case.
====

[discrete]
[[breaking_710_snapshot_restore_changes]]
=== Snapshot and restore changes

[[respository-stats-api-deprecated]]
.The repository stats API has been deprecated.
[%collapsible]
====
*Details* +
The repository stats API was introduced as an experimental API in 7.8.0. The
{ref}/repositories-metering-apis.html[repositories metering APIs] now replace the
repository stats API. The repository stats API has been deprecated and will be
removed in 8.0.0.

*Impact* +
Use the {ref}/repositories-metering-apis.html[repositories metering APIs].
Discontinue use of the repository stats API.
====
//end::notable-breaking-changes[]
