Migrating from Elasticsearch to Opensearch

Updated . Posted . Visible to the public.

Why do we migrate?

Due to a change in licensing Show archive.org snapshot , we cannot provide Elasticsearch versions >= 8.0.
Version 7.17.x will reach EOL Show archive.org snapshot status with the release of Elasticsearch version 9.
We have decided to use OpenSearch Show archive.org snapshot as a replacement, since it is a fork of Elasticsearch version 7.10.2, still running under the previous licensing model and wire-compatible.
A more detailed reasoning can be found on their website Show archive.org snapshot

How we migrate?

Unfortunately, there is no simple migration tool that helps us move your Elasticsearch indices to OpenSearch.

This card describes the general migration workflow.


  1. We deploy a new OpenSearch cluster parallel to the current Elasticsearch cluster.
  2. Your app performs a reindex operation to the OpenSearch cluster
  3. Your app switches to the OpenSearch cluster
  4. We shutdown the Elasticsearch cluster, as soon as everything works as expected.
flowchart TB
  subgraph "1"
      A0[App]-- Search -->ES0[Elasticsearch]
      A0[App]-- Update -->ES0[Elasticsearch]
  subgraph "2"
      A1[App]-- Search -->ES1[Elasticsearch]
      A1[App]-- Update -->ES1[Elasticsearch]
      A1[App]-- Reindex -->OS1[OpenSearch]
  subgraph "3"
      A2[App]-- Search -->OS2[OpenSearch]
      A2[App]-- Update -->OS2[OpenSearch]
  subgraph "4"
      A3[App]-- Search -->OS3[OpenSearch]
      A3[App]-- Update -->OS3[OpenSearch]


If the reindex operation requires an open terminal session you can use screen to be able to detach on demand

Which versions do we provide?

We aim to provide the latest stable version of OpenSearch by default. At the time of writing this is OpenSearch 2.x which corresponds to Elasticsearch 8.x. Since this means an upgrade to the next major version please refer to the breaking changes linked below.

On request we may provide OpenSearch 1.x corresponding to Elasticsearch 7.x.

How do you update your application?

This depends on how the application will connect to OpenSearch. Usually this happens in close collaboration with our operations engineers, who will tell you which endpoint to connect to.

An in-depth explanation for searchkick can be found under Migrate searchkick from Elasticsearch client to Opensearch client without Downtime.

What new features can be used?

You can find an overview of all release highlights in the version history Show archive.org snapshot .

Let's Encrypt

Most noteworthy is the possibility of enabling encryption via Let's Encrypt certificates.

node-to-node communication

  • uses transport encryption to between nodes across the cluster
  • can be used without enabling API endpoint encryption

client-to-node communication

  • requests from your application to OpenSearch are encrypted as well
  • requires transport encryption

What do you have to keep an eye out for?

Marc Dierig
Last edit
Marc Dierig
Source code in this card is licensed under the MIT License.
Posted by Marc Dierig to makandra dev (2024-04-16 12:14)