[[migrating-7.10]]
== Migrating to 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



[discrete]
[[breaking-changes-7.10]]
=== Breaking changes

The following changes in {es} 7.10 might affect your applications
and prevent them from operating normally.
Before upgrading to 7.10, review these changes and take the described steps
to mitigate the impact.

NOTE: Breaking changes introduced in minor versions are
normally limited to security and bug fixes.
Significant changes in behavior are deprecated in a minor release and
the old behavior is supported until the next major release.
To find out if you are using any deprecated functionality,
enable <<deprecation-logging, deprecation logging>>.


//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_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_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.
====

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

[discrete]
[[deprecated-7.10]]
=== Deprecations

The following functionality has been deprecated in {es} 7.10
and will be removed in 8.0
While this won't have an immediate impact on your applications,
we strongly encourage you take the described steps to update your code
after upgrading to 7.10.

NOTE: Significant changes in behavior are deprecated in a minor release and
the old behavior is supported until the next major release.
To find out if you are using any deprecated functionality,
enable <<deprecation-logging, deprecation logging>>.

[discrete]
[[breaking_710_indices_changes]]
==== Indices deprecations

[[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_ml_changes]]
==== Machine learning deprecations

[[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 deprecations

[[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_snapshot_restore_changes]]
==== Snapshot and restore deprecations

[[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.
====
