OpenSearch Migration Check: Elasticsearch & Kibana cutover lint

OpenSearch migration check for Elasticsearch and Kibana stacks: flags Elastic-licensed images, xpack settings, 7.14+ clients, ILM, dense_vector and Beats that break the cutover, with the OpenSearch replacement. Runs entirely in your browser — nothing is uploaded.

Same engine as the VS Code extension, byte for byte.

Get the complete version $29

This page is the working piece. The full pack has everything below.

25 rules for compose files, elasticsearch.yml, Kibana config, Logstash pipelines, client pins and mappings. The sample docker-compose.yml (Elasticsearch, Kibana, Filebeat 8.15.0) gives 6 fin

Elastic Cloud Hosted Standard starts at $99 per month (elastic.co/pricing/cloud-hosted).

Buy the full version — $29
Want the full version?
Enter your email and we send the download link.
ENDEJAESPT

Find a tool

· ReadyStack

Worked example

Real numbers from this tool, line by line.

OpenSearch Migration Check: Elasticsearch & Kibana cutover lint

Migrate from Elasticsearch to OpenSearch: 6 lines in a sample docker-compose.yml that break the cutover

6 lines in a sample Elasticsearch 8.15.0 docker-compose.yml break an OpenSearch cutover, and platform engineers in teams moving off Elastic find most of them only when the new node refuses to start. Elastic moved Elasticsearch and Kibana from Apache-2.0 to SSPL / Elastic License 2.0 with version 7.11, and Elasticsearch 7.17 reached end of support on 2026-01-15. OpenSearch forked from 7.10.2 and stayed Apache-2.0, so it is where many self-managed clusters go next.

The sample file

The stack is the one you find in many repositories: one Elasticsearch node, Kibana, and Filebeat shipping container logs, all on 8.15.0.

elasticsearch:
  image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0
  environment:
    - xpack.security.enabled=true
    - ELASTIC_PASSWORD=changeme
kibana:
  image: docker.elastic.co/kibana/kibana:8.15.0
  environment:
    - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
filebeat:
  image: docker.elastic.co/beats/filebeat:8.15.0

The 6 findings

Line that breaksOpenSearch fix
elasticsearch:8.15.0 imageopensearchproject/opensearch:2
xpack.security.enabled=trueplugins.security.*
ELASTIC_PASSWORDOPENSEARCH_INITIAL_ADMIN_PASSWORD
kibana:8.15.0 imageopensearch-dashboards:2
ELASTICSEARCH_HOSTSOPENSEARCH_HOSTS
filebeat:8.15.0 imageFluent Bit or Data Prepper

Why each one matters:

Rewritten for OpenSearch 2.17.0, the same file gives 0 findings.

The part grep misses: clients

Search the repository for elasticsearch and you get every service name, volume path and URL. The dangerous hits are in the dependency files. elasticsearch-py 7.14.0 added a product check that raises UnsupportedProductError on any server that is not Elasticsearch, and the Node, Java, Go and Ruby clients do the same. A requirements.txt with elasticsearch==8.15.1 and elasticsearch-dsl==8.15.3 gives 2 findings; the fix is opensearch-py.

Mappings and APIs

Index templates carry their own blockers: dense_vector becomes knn_vector with index.knn: true, flattened becomes flat_object (OpenSearch 2.7 and later), ILM policies become ISM policies under _plugins/_ism, and ES|QL queries on /_query need to be rewritten as PPL or SQL.

Checking your own files

OpenSearch Migration Check is a VS Code extension with 25 rules covering images, settings, clients, pipelines, mappings and APIs. Open a file and the findings appear in the Problems panel with the line number and the replacement. For a 7.x image it also counts the days since the 2026-01-15 end of support, from the date you run it. The same engine runs in the free web version in the browser.

Staying on Elastic hosting is a monthly bill: Elastic Cloud Hosted Standard starts at $99 per month. It does not move data; it lists the lines to change first.

15 seconds — what it actually does

Questions people ask

What does OpenSearch Migration Check do?

It reads a docker-compose.yml, elasticsearch.yml, Kibana config, Logstash pipeline, client dependency file or index mapping and flags every line that breaks a move from Elasticsearch and Kibana to OpenSearch: Elastic images, xpack settings, 7.14+ clients, ILM, dense_vector and Beats. Each finding has the line number and the OpenSearch replacement. It has 25 rules and runs locally.

Who is OpenSearch Migration Check for?

Platform engineers, SREs and DevOps teams moving a self-managed Elasticsearch 7.x or 8.x stack to OpenSearch or Amazon OpenSearch Service, usually because of the SSPL / Elastic License change in 7.11 or because Elasticsearch 7.17 reached end of support on 2026-01-15. It also helps developers switching application clients to opensearch-py or the OpenSearch JavaScript client.

Why not just grep for elasticsearch or ask a chatbot?

Grep for elasticsearch hits every service name, volume path and URL, so the real blockers drown. A chatbot rarely knows that Elastic clients from 7.14 on raise UnsupportedProductError against OpenSearch, that OpenSearch refuses to start on an unknown xpack setting, or that OpenSearch 2.12 needs OPENSEARCH_INITIAL_ADMIN_PASSWORD. This check knows those lines and gives the replacement for each.

What is free and what does the paid version add?

The free version checks any open file with all 25 rules, with line numbers and fixes, and the web version does the same in the browser. Nothing is cut or time-limited. The paid version, $29 once, scans the whole repository in one pass and exports one Markdown migration checklist per file, ready to attach to the change ticket.

What does the alternative cost?

Staying on Elastic's hosted offering costs money every month: Elastic Cloud Hosted Standard starts at $99 per month according to Elastic's pricing page. The free check costs nothing and the repository-wide version is a one-time $29, one licence key per person or team seat. It does not replace migrating the data, it finds the config and code lines to change first.

Ask about this tool

One question, answered by the person who built it. Your email only if you want the answer sent.