
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 version | OpenSearch | Elasticsearch |
|---|---|---|
| 2.4.9 | 3 | Not listed |
| 2.4.8-p5 | 3 | 8 |
| 2.4.7-p10 | 2.19, 3 | 8 |
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:
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:
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_authThe 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:
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:cleanIn 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.

Step 3: match the error to the fix
| Message or symptom | Likely cause | Fix |
|---|---|---|
| "No alive nodes found in your cluster" | Magento cannot reach OpenSearch | Steps 1 and 2: service, host, port, firewall, credentials |
| "opensearch search engine doesn't exist. Falling back to elasticsearch7" | Your Magento version predates OpenSearch support | Upgrade to 2.4.6, 2.4.5-p12, 2.4.4-p13 or later |
| "Your current search engine, <name>, is not supported" during an upgrade | The engine is still mysql, elasticsearch or elasticsearch6 | Revert, install a supported engine, reindex, then upgrade |
| "Index is locked by another reindex process. Skipping." | A previous reindex died part-way | indexer:reset, then reindex |
| New products or price changes missing from search | Indexer behind or cron stopped | Check indexer status and cron |
| Reindex fails with a read-only or index block error | OpenSearch disk passed the flood-stage watermark | Free 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:
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:
bin/magento indexer:status
bin/magento indexer:reindex catalogsearch_fulltext
bin/magento cache:cleanIf the reindex is skipped because the index is locked, reset it first. indexer:info lists the identifiers:
bin/magento indexer:info
bin/magento indexer:reset catalogsearch_fulltext
bin/magento indexer:reindex catalogsearch_fulltextAdobe 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.

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:
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:
#!/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.logAdd 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
magento2prefix, they overwrite each other's indices. Give each environment its ownopensearch_index_prefix. - Timeouts on large catalogues. The default server timeout is 15 seconds. Raise
catalog/search/opensearch_server_timeoutif 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_CONFIGURATIONin.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
- Add the
_cluster/healthcheck and a disk-usage alert at 80% to your monitoring. - Give every environment its own index prefix.
- Upgrade to OpenSearch 3 before moving to Magento 2.4.9.
- Keep cron and indexers in schedule mode, and alert when
indexer:statusreports 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/searchsettings are right, and that no firewall blocks the connection.How do I reindex only Magento search?
Run
bin/magento indexer:reindex catalogsearch_fulltext, thenbin/magento cache:clean. If the index is locked, runbin/magento indexer:reset catalogsearch_fulltextfirst.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_deleteblock. 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.
Your next customer could start right here.
Introduce your tool, product or business to readers exploring technology.
Explore placements and request a private quote
Sources
- System requirements (Adobe Commerce) — Adobe Experience League
- Configure the search engine — Adobe Experience League
- Advanced on-premises installation (search engine options) — Adobe Experience League
- Falling back to Elasticsearch7 when search engine set to OpenSearch — Adobe Experience League
- Current search engine not supported — Adobe Experience League
- Index is locked by another process — Adobe Experience League
- 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.
More from Cloudsoft Zone

Troubleshooting guideCodeIgniter
CodeIgniter 4 validation not working? 9 causes and fixes
Fix CodeIgniter 4 validation problems fast: wrong input source, lost errors after redirect, permit_empty, strict JSON rules, is_unique placeholders and more.
By Cloudsoft Zone

TutorialPHP
PHPStan tutorial: catch PHP bugs before production with levels
Install PHPStan 2.3, choose a rule level, adopt a baseline for legacy code and fail CI only on new errors, with real output from a worked PHP 8.5 example.
By Cloudsoft Zone

Resource guideResources
Cron syntax cheat sheet: crontab, GitHub Actions, Kubernetes
Cron syntax with tested expressions, the day-of-week trap, and how time zones and limits differ in crontab, GitHub Actions, Kubernetes and Laravel in 2026.
By Cloudsoft Zone
