[[setup-upgrade]]
= Upgrade {es}

ifeval::["{release-state}"!="released"]
[[upgrade-pre-release]]
IMPORTANT: This documentation is for {es} {version}, which is not yet released.
You can upgrade from a previously released version to a pre-release build, if
following a supported upgrade path. Upgrading from a pre-release build to any
other build is not supported, and can result in errors or silent data loss. If
you run a pre-release build for testing, discard the contents of the cluster
before upgrading to another build of {es}.
endif::[]

{es} clusters can usually be upgraded one node at a time so upgrading does not
interrupt service. For upgrade instructions, refer to
{stack-ref}/upgrading-elastic-stack.html[Upgrading to Elastic {version}].

.Upgrade from 7.x
IMPORTANT: To upgrade to {version} from 7.16 or an earlier version, **you must
first upgrade to {prev-major-last}**, even if you opt to do a full-cluster
restart instead of a rolling upgrade. This enables you to use the **Upgrade
Assistant** to identify and resolve issues, reindex indices created before 7.0,
and then perform a rolling upgrade. You must resolve all critical issues before
proceeding with the upgrade. For instructions, refer to
{stack-ref}/upgrading-elastic-stack.html#prepare-to-upgrade[Prepare to upgrade
from 7.x].

[discrete]
[[upgrade-index-compatibility]]
=== Index compatibility

{es} has full query and write support for indices created in the previous major
version. If you have indices created in 6.x or earlier, you might use the
<<archive-indices,archive functionality>> to import them into newer {es}
versions, or you must reindex or delete them before upgrading to {version}.
{es} nodes will fail to start if incompatible indices are present.
Snapshots of 6.x or earlier indices can only restored using the
<<archive-indices,archive functionality>> to a 8.x cluster even if they
were created by a 7.x cluster.
The **Upgrade Assistant** in {prev-major-last} identifies any indices
that need to be reindexed or removed.

[discrete]
[[upgrade-rest-api-compatibility]]
=== REST API compatibility

<<rest-api-compatibility,REST API compatibility>> is a per-request opt-in
feature that can help REST clients mitigate non-compatible (breaking) changes to
the REST API.

[discrete]
[[upgrade-fips-java17]]
=== FIPS Compliance and Java 17

include::{es-ref-dir}/security/fips-java17.asciidoc[]

include::upgrade/archived-settings.asciidoc[]

include::upgrade/archive-indices.asciidoc[]
