Skip to main content

Cloudsoft Zone Build, deploy and scale with practical guides to PHP, Node.js, React, DevOps and AI automation. Explore the guides

Cloudsoft Zone
MagentoDevOpsTroubleshooting guide

Magento OpenSearch errors: how to diagnose and fix search fast

Magento search down? Check OpenSearch health, Magento's engine settings, version support, locked indexers and read-only indices, with tested commands for each.

Cloudsoft Zone

Updated 6 min read

Visitors in high-visibility vests listen to a guide beside conveyor belts and stacked boxes in a fulfilment centre
Photograph: U.S. Army 405TH-AFSB by Cameron Porter / Public domain, via Wikimedia Commons
In this article

When Magento search breaks, the cause is almost always one of five things: OpenSearch is unreachable, Magento is pointed at the wrong engine or host, the version is unsupported, the search index is stale or locked, or the OpenSearch disk is full and indices have gone read-only. Work through them in that order with the commands below and you will fix most search outages in minutes. Every command here is checked against Adobe's 2.4 documentation, the magento/magento2 source or the OpenSearch documentation.

Know what your version expects

Magento 2.4 has no MySQL search fallback: catalog search, layered navigation and category listings all depend on the search engine. Adobe's system requirements in October 2026 list:

Magento versionOpenSearchElasticsearch
2.4.93Not listed
2.4.8-p538
2.4.7-p102.19, 38

If you are upgrading to 2.4.9, plan to move to OpenSearch 3 first. OpenSearch can be selected as the engine only from Adobe Commerce 2.4.6, 2.4.5-p12 and 2.4.4-p13 onward.

Step 1: is OpenSearch up and healthy?

Start outside Magento. From the web server, ask the cluster for its version and health:

Shell
curl -s http://127.0.0.1:9200
curl -s 'http://127.0.0.1:9200/_cluster/health?pretty'

If the security plugin is enabled, add -u user:password and use https://. Read the status field:

  • green: all shards allocated. Look at Magento's configuration next.
  • yellow: primary shards are fine, but some replicas are not allocated. Search works; on a single-node cluster this is normal when indices request replicas.
  • red: at least one primary shard is missing, and some data is unavailable. Fix the cluster before you touch Magento.

If curl cannot connect at all, Magento will report connection errors such as "No alive nodes found in your cluster". Check that the service is running, that it listens on the address Magento uses, and that a firewall or security group is not blocking port 9200.

Step 2: check what Magento is configured to use

Print the engine and connection settings. These are the configuration paths defined in Magento's OpenSearch module:

Shell
bin/magento config:show catalog/search/engine
bin/magento config:show catalog/search/opensearch_server_hostname
bin/magento config:show catalog/search/opensearch_server_port
bin/magento config:show catalog/search/opensearch_index_prefix
bin/magento config:show catalog/search/opensearch_enable_auth

The defaults are engine opensearch, host localhost, port 9200, index prefix magento2, authentication off and a 15-second timeout. To fix a wrong value, set it and clean the cache:

Shell
bin/magento config:set catalog/search/engine opensearch
bin/magento config:set catalog/search/opensearch_server_hostname opensearch.internal
bin/magento config:set catalog/search/opensearch_server_port 9200
bin/magento cache:clean

In the Admin, the same fields live under Stores > Settings > Configuration > Catalog > Catalog > Catalog Search, with a Test Connection button. Use it after every change.

One trap: values in app/etc/env.php or config.php override the database and lock the Admin field. If the Admin field is greyed out, edit the file or use config:set --lock-env instead. For new installations, the setup:install options are --search-engine, --opensearch-host, --opensearch-port, --opensearch-index-prefix, --opensearch-timeout, --opensearch-enable-auth, --opensearch-username and --opensearch-password.

Exterior of a low beige e-commerce fulfilment centre building behind trees and tall grass under a blue sky
Every product in the warehouse needs to be in the search index too; stale indices hide stock.

Step 3: match the error to the fix

Message or symptomLikely causeFix
"No alive nodes found in your cluster"Magento cannot reach OpenSearchSteps 1 and 2: service, host, port, firewall, credentials
"opensearch search engine doesn't exist. Falling back to elasticsearch7"Your Magento version predates OpenSearch supportUpgrade to 2.4.6, 2.4.5-p12, 2.4.4-p13 or later
"Your current search engine, <name>, is not supported" during an upgradeThe engine is still mysql, elasticsearch or elasticsearch6Revert, install a supported engine, reindex, then upgrade
"Index is locked by another reindex process. Skipping."A previous reindex died part-wayindexer:reset, then reindex
New products or price changes missing from searchIndexer behind or cron stoppedCheck indexer status and cron
Reindex fails with a read-only or index block errorOpenSearch disk passed the flood-stage watermarkFree disk space (Step 5)

Recovering from the "not supported" upgrade error

Adobe's guidance is to revert to the version you ran before, so you can reach the Admin again, then install and configure a supported engine, reindex and retry the upgrade:

Shell
composer require-commerce magento/product-community-edition=<previous-version>
# Adobe Commerce: magento/product-enterprise-edition=<previous-version>

Step 4: rebuild the search index

Once Magento can talk to a healthy cluster, rebuild the catalog search index and clean the cache:

Shell
bin/magento indexer:status
bin/magento indexer:reindex catalogsearch_fulltext
bin/magento cache:clean

If the reindex is skipped because the index is locked, reset it first. indexer:info lists the identifiers:

Shell
bin/magento indexer:info
bin/magento indexer:reset catalogsearch_fulltext
bin/magento indexer:reindex catalogsearch_fulltext

Adobe lists memory limits, MySQL timeouts, fatal PHP errors and interruption by another process as typical reasons a reindex stops part-way. Check var/log/exception.log and system.log before you run it again, or it will fail at the same point.

Finally, confirm cron runs. Adobe's search configuration page reminds you that indexers are updated by a cron job; without cron, the index drifts out of date again after every product change.

A woman sitting on a tree stump in a green park using a laptop on her knees
Most shopping journeys start with a search box, so monitor the search engine like a payment gateway.

Step 5: fix read-only indices after a full disk

OpenSearch protects itself when disks fill up. According to the OpenSearch cluster settings documentation, at the flood-stage watermark (95% by default) it puts an index.blocks.read_only_allow_delete block on every index with a shard on that node. Magento can still read, so search may appear to work, but every reindex and product save that writes to the index fails.

Check disk usage per node and look for the block:

Shell
curl -s 'http://127.0.0.1:9200/_cat/allocation?v'
curl -s 'http://127.0.0.1:9200/magento2*/_settings/index.blocks*?pretty'

Free space by adding disk, removing old snapshots or log indices, or deleting orphaned indices left by other environments. OpenSearch releases the block automatically once disk use falls below the high watermark (90% by default). Then reindex catalogsearch_fulltext so writes that failed are rebuilt.

A five-minute triage script

When search fails during trading hours, you want answers fast, not a checklist to read. Save this as search-triage.sh in the Magento root and run it as the file system owner. It only reads state, so it is safe on production:

Shell
#!/usr/bin/env bash
set -u
HOST=$(bin/magento config:show catalog/search/opensearch_server_hostname)
PORT=$(bin/magento config:show catalog/search/opensearch_server_port)
echo "Engine: $(bin/magento config:show catalog/search/engine)  Target: $HOST:$PORT"
curl -s -m 5 "http://$HOST:$PORT/_cluster/health?pretty" || echo "Cannot reach OpenSearch"
curl -s -m 5 "http://$HOST:$PORT/_cat/allocation?v"
bin/magento indexer:status | grep -i -E 'catalogsearch|invalid'
tail -n 20 var/log/exception.log

Add credentials to the curl calls if your cluster requires them, and switch to https:// where TLS is enabled. The output tells you which of the five causes you are dealing with: no response points to connectivity, a red status to the cluster, a disk above 95% to read-only blocks, and an invalid indexer to a reindex.

If config:show prints nothing for a path, the value is not stored in the database and Magento is using the module default or a value from env.php; check those files next.

Gotchas

  • Shared clusters need unique prefixes. If staging and production share one OpenSearch cluster with the default magento2 prefix, they overwrite each other's indices. Give each environment its own opensearch_index_prefix.
  • Timeouts on large catalogues. The default server timeout is 15 seconds. Raise catalog/search/opensearch_server_timeout if bulk indexing times out, but also check cluster resources.
  • Cloud environments lock the engine. On Adobe Commerce on cloud infrastructure, the search engine is set through SEARCH_CONFIGURATION in .magento.env.yaml, not in the Admin.
  • Do not delete indices blindly. Removing a magento2* index on production empties search until the reindex completes.
  • Third-party search modules may create their own indices and settings. Check their documentation before changing the cluster.

What to do next

  1. Add the _cluster/health check and a disk-usage alert at 80% to your monitoring.
  2. Give every environment its own index prefix.
  3. Upgrade to OpenSearch 3 before moving to Magento 2.4.9.
  4. Keep cron and indexers in schedule mode, and alert when indexer:status reports an invalid index.

Frequently asked questions

  • Which OpenSearch version does Magento 2.4.9 need?

    Adobe's system requirements list OpenSearch 3 for 2.4.9. Magento 2.4.8-p5 also lists OpenSearch 3, and 2.4.7-p10 lists OpenSearch 2.19 or 3.

  • Can Magento 2.4 run without OpenSearch or Elasticsearch?

    No. Magento 2.4 removed MySQL as a catalog search engine, so a supported search engine is required for search and category pages.

  • What does "No alive nodes found in your cluster" mean?

    Magento could not connect to any search node. Check that OpenSearch is running, that the host and port in catalog/search settings are right, and that no firewall blocks the connection.

  • How do I reindex only Magento search?

    Run bin/magento indexer:reindex catalogsearch_fulltext, then bin/magento cache:clean. If the index is locked, run bin/magento indexer:reset catalogsearch_fulltext first.

  • Why did my OpenSearch indices become read-only?

    A node passed the flood-stage disk watermark, 95% by default, and OpenSearch added an index.blocks.read_only_allow_delete block. Free disk space; the block is released once usage drops below the high watermark.

  • Why does Magento fall back to elasticsearch7 when I choose OpenSearch?

    Your version predates OpenSearch support. Adobe says OpenSearch can be selected from 2.4.6, 2.4.5-p12 and 2.4.4-p13.

Advertise on CloudSoftZone

Your next customer could start right here.

Introduce your tool, product or business to readers exploring technology.

Advertise with us

Explore placements and request a private quote

Sources

  1. System requirements (Adobe Commerce) — Adobe Experience League
  2. Configure the search engine — Adobe Experience League
  3. Advanced on-premises installation (search engine options) — Adobe Experience League
  4. Falling back to Elasticsearch7 when search engine set to OpenSearch — Adobe Experience League
  5. Current search engine not supported — Adobe Experience League
  6. Index is locked by another process — Adobe Experience League
  7. Cluster settings — OpenSearch Project

Written with substantial AI assistance. Facts checked against cited sources. Editorial policy.

Comments

No comments yet. Be the first to join the conversation.

Leave a comment

Every comment is read by a moderator before it appears. Your email address is never published; it is used only to contact you about this comment.

Never published. Used only to contact you about this comment.

Loading the security check…

Comments are moderated before publication.