// OSSeva Blog
MigrationElasticsearch 7.17 Upgrade Options: Elasticsearch 8.19, 9.x or OpenSearch
The short answer
Elastic's end-of-life table puts the end of maintenance for 7.17 at 15 April 2025 and the end of support at 15 January 2026. There are two ways out:
- Stay with Elastic. Upgrade 7.17 to 8.19 with the Upgrade Assistant and a rolling upgrade. 8.x support ends on 15 July 2027, so plan the next hop from 8.19 to 9.x as part of the same programme. Elastic lists the end of maintenance for 9.x as 15 October 2027, with end of support set 18 months after the release of 10.0.
- Move to OpenSearch. OpenSearch forked from Elasticsearch 7.10.2 and is licensed under Apache 2.0. From 7.17 the move is a migration to a new cluster, not an in-place upgrade, and the OpenSearch Migration Assistant is the tool built for it.
Licence terms and existing Elastic subscriptions usually decide between them, and they are covered below. The technical work is comparable: both routes require reindexing old indices, updating every client and testing security.
Route 1: Elasticsearch 8.19, then 9.x
Elastic's guide is explicit: to reach 8.19 from 7.16 or earlier you must first upgrade to 7.17, and to reach 9.x from 7.17 you go through 8.19. Each major upgrade is prepared and executed on its own.
- Bring the rest of the stack to 7.17. All ingest components and client libraries must be on 7.17.x before the cluster moves to 8.19.
- Take a snapshot and confirm you can restore it.
- Run the Upgrade Assistant in Kibana 7.17, or query
GET _migration/deprecations. Resolve every critical issue. The main one is indices created before 7.0, which 8.x cannot open; the assistant reindexes them, or you delete them. - Set
xpack.security.enabledexplicitly inelasticsearch.yml(see below). - Do the rolling upgrade. One node at a time: disable replica shard allocation, stop the node, install 8.19, start it, re-enable allocation and wait for the cluster to recover before the next node.
- Upgrade the rest in order: Elasticsearch first, then Kibana, then Fleet Server, APM, Logstash and Beats.
- For 9.x, repeat on 8.19: upgrade ingest components and clients to 8.19.x, then use the 8.19 Upgrade Assistant to reindex or mark read-only any indices and data streams created before 8.0. Enterprise Search was discontinued in 9.0 and has to be removed before that upgrade.
Breaking changes in 8.0
From Elastic's migration guide for 8.0, the changes that most often break a 7.17 deployment:
| Change | Effect | What to do |
|---|---|---|
| Security on for all licences | xpack.security.enabled defaults to true, so a cluster that never configured it starts requiring authentication | Set up users, roles and TLS before the upgrade, or set the value explicitly |
| Mapping types removed | Typed endpoints such as <target>/<type>/_bulk are gone; typeless versions such as <target>/_bulk replace them | Update request paths and index templates |
| Indices created in 6.x and earlier not supported | They cannot be opened, including closed 6.x indices | Reindex or delete them on 7.17 |
discovery.zen.* and other deprecated settings removed | Nodes refuse to start with them in config | Clean elasticsearch.yml using the deprecation log |
| Legacy role settings removed | node.data, node.master and similar no longer work | Use node.roles |
_xpack REST endpoints removed | Old tooling and scripts fail | Use the current endpoints |
action.destructive_requires_name defaults to true | Wildcard index deletes are refused | Name indices explicitly in cleanup jobs |
| Transport client removed | Java applications using it cannot connect | Move to the Java API Client |
kibana user replaced by kibana_system | Kibana fails to authenticate with old credentials | Update Kibana configuration |
| Joda-time date formats replaced by java-time | Some custom date formats parse differently | Test mappings and ingest pipelines with real data |
Security on an upgraded cluster
On a brand-new 8.x node, Elasticsearch generates TLS certificates, writes the TLS settings and creates an elastic password at first start. The documentation says this auto-configuration is skipped when the node detects it is already part of a cluster, which is the case in a rolling upgrade. So an upgraded cluster gets security switched on without the generated certificates. If your 7.17 cluster ran without security, configure it on 7.17 first and test it there, rather than discovering the change halfway through the roll.
Clients
Elasticsearch 8 offers REST API compatibility for 7.x clients. A client sends Accept: application/vnd.elasticsearch+json;compatible-with=7, or you set ELASTIC_CLIENT_APIVERSIONING=true, and the server tries to honour 7.x request and response formats. It covers one major version only, and the deprecation log entries in the compatible_api category show what still needs changing. Use it to decouple the server upgrade from the client upgrade, then move every application to the 8.x clients and the Java API Client before the 9.x step.
Route 2: OpenSearch
Why a rolling upgrade does not work from 7.17
OpenSearch's index compatibility table lists Lucene 8.11.1 for Elasticsearch 7.17 and Lucene 8.10.1 for OpenSearch 1.2 and 1.3. A 7.17 index is written in a newer Lucene format than any OpenSearch 1.x release can read, so there is no in-place path. The OpenSearch documentation also states that snapshots are only forward compatible by one major version. Treat the move as a migration to a new cluster.
How to migrate
OpenSearch documents four methods: rolling upgrade, snapshot and restore, remote reindex and Migration Assistant. For a 7.17 source, the practical choices are:
- Migration Assistant. Its support matrix lists Elasticsearch 5.x to 7.x as sources for OpenSearch 1.x, 2.x and 3.x targets. It migrates metadata, backfills documents by reading shard data from a snapshot in object storage (reindex-from-snapshot), and can capture and replay live writes through a proxy for a near-zero-downtime cutover. It runs on Kubernetes and needs its own infrastructure.
- Remote reindex. The new OpenSearch cluster pulls documents from 7.17 over HTTP. It needs no extra platform, but it is slower and loads the source cluster.
Target OpenSearch 2.x or 3.x. OpenSearch 1.x reached end of life on 6 May 2025 and cannot read 7.17 indices anyway.
What changes for applications
- Clients. From 7.14, several of Elastic's official clients run a product check before the first request and refuse to talk to a server that is not Elasticsearch. Applications have to move to the OpenSearch clients.
- Security. X-Pack security configuration does not carry over. Users, roles and role mappings are rebuilt in the OpenSearch Security plugin.
- Dashboards and Elastic features. Kibana becomes OpenSearch Dashboards. Saved objects, alerting rules, machine learning jobs and other Elastic-specific features have OpenSearch counterparts that work differently, and each one has to be recreated and tested.
- Ingest. Check Logstash and Beats versions against the OpenSearch tools compatibility matrices.
Licences
| Release | Licence |
|---|---|
| Elasticsearch 7.10.2 and earlier | Apache 2.0 for the open source distribution |
| Elasticsearch 7.11 to 8.15 | Server Side Public License or Elastic License 2.0 |
| Elasticsearch 8.16 and later | AGPLv3 added as a third option |
| OpenSearch, all versions | Apache 2.0, under the OpenSearch Project at the Linux Foundation |
If you are on 7.17 you already run under SSPL or the Elastic License, so staying with Elastic changes nothing about your licence position, and AGPL becomes available on 8.16 and later. The licence question matters most for teams that ship Elasticsearch inside a product or offer it as a service. Ask your legal team which of the three licences, if any, fits that use before choosing Route 1. Paid features in the Elastic distribution depend on your subscription level, so check that every feature you use is covered at the level you hold.
Test plan
- Restore a production snapshot into staging and run the full route there, timing each phase.
- Replay a sample of real queries against old and new clusters and compare hit counts and top results. Scoring and analyzer behaviour can shift between major versions, and between Elasticsearch and OpenSearch.
- Test every client against the new cluster with security enabled, including batch jobs and anything that still uses the transport client or typed endpoints.
- Test ingest pipelines and date-heavy mappings with real documents, since date format parsing changed in 8.0.
- Check snapshot and restore on the new cluster before you depend on it.
- Load test indexing and query throughput at peak rates. JVM and heap behaviour differ across releases.
- Rehearse cutover and rollback, including how clients are repointed.
Rollback
A rolling upgrade from 7.17 to 8.19 has no node-by-node undo. Indices written by 8.x cannot be read by 7.17, so the way back is the snapshot you took before the upgrade, restored into a 7.17 cluster, plus whatever writes happened since. Keep that snapshot and the 7.17 packages until the new cluster has run through a full business cycle.
The OpenSearch route is easier to reverse because the source cluster is never changed. Rollback means pointing clients back at 7.17. If you use Migration Assistant's capture and replay, keep the source receiving writes until you are confident in the target.
If 7.17 has to keep running
Reindexing petabytes, rewriting clients and rebuilding security takes longer than most teams expect, and some products embed Elasticsearch so deeply that only the vendor can move them. OSSeva ships patched Elasticsearch 7.10.2 and 7.17 builds with security fixes backported to Elasticsearch and its bundled libraries, plus bundled JDK updates, as signed packages and container images with SBOMs. Assure adds a security and network exposure review, a reindex and client plan for 8.x or OpenSearch, and VEX attestation for scanner findings. Operate adds 24/7 cluster monitoring, a 15-minute P1 response and executed migrations to 8.x or OpenSearch. See Elasticsearch support and Elasticsearch 7 extended support.
Related
Tags
Ready to get your open source under control?
Talk to an OSSeva engineer about CVE coverage, compliance, and migration support for your stack.