Performance

Magento OpenSearch Health and Index Freshness

Catalog search runs on a separate cluster. Check the engine, connection, OpenSearch cluster health, and index freshness before blaming Magento for bad search.

Jason Schuman · July 22, 2026

Catalog search is only as healthy as the engine behind it

On Magento 2.4.x, catalog search does not run inside Magento. It runs on a separate OpenSearch or Elasticsearch cluster, and the storefront depends on that cluster being reachable, healthy, and current.

When the engine is degraded, search returns wrong results or nothing at all, and the application logs fill with connection errors. The store keeps loading, so the problem is easy to miss until customers cannot find products.

This article covers how to confirm the search engine is configured correctly, how to read cluster health, and why a stale index quietly hides new products.

Confirm the engine and connection first

Start by checking what Magento is configured to talk to. bin/magento config:show catalog/search/engine reports the active engine, which on current versions should be opensearch.

The connection host, port, and any authentication live in the same configuration. If those are wrong, catalog reindexing and storefront search both fail, and exception.log will show connection-refused errors pointing at the search host.

Confirm the indexer itself with bin/magento indexer:status and look at catalogsearch_fulltext. That indexer is the bridge between the catalog and the search engine, and its state tells you whether the two are in sync.

Cluster health: green, yellow, red

OpenSearch reports its own health in one call. Query the cluster directly and read the status color:

curl -s localhost:9200/_cluster/health?pretty

Green means all shards are assigned and the cluster is fully operational. Yellow means the primaries are fine but some replicas are unassigned, which is normal on a single-node setup and not usually urgent.

A red cluster means at least one primary shard is missing. On a Magento store that usually means catalog search is returning nothing or throwing errors on the storefront.

The disk watermark that quietly breaks search

OpenSearch protects itself from a full disk with watermarks, and those watermarks can break search before the disk is actually full. As usage climbs past roughly 90%, the cluster stops assigning new shards.

Past the flood-stage watermark, higher still, OpenSearch marks indices read-only to avoid corruption. At that point reindexing fails and the search index cannot update, even though the storefront looks fine.

This ties search health directly to disk health on the search server. A search index that suddenly stopped updating is often a disk that crossed a watermark, not a Magento problem at all.

Index freshness: when new products do not appear

A healthy cluster can still serve stale results. If the catalogsearch_fulltext indexer is on schedule and cron is behind, new and changed products do not make it into the index on time.

You can see the indices and their document counts directly:

curl -s localhost:9200/_cat/indices?v

Compare the document count on the active Magento index against the catalog you expect. A large gap, or a count that never changes while the catalog does, points at an indexer or cron problem behind the search engine. A manual bin/magento indexer:reindex catalogsearch_fulltext confirms whether reindexing itself still works.

Version alignment

Each Magento version supports a specific range of OpenSearch and Elasticsearch versions. Running an engine version outside that range causes subtle failures that are hard to trace, from mapping errors to failed reindexes.

Confirm the running engine version against the supported matrix for your exact Magento release. An engine that drifted out of the supported range during a server upgrade is a common and easily missed cause of broken search.

Pin the engine version in your infrastructure rather than letting a package manager float it. That keeps the alignment from quietly breaking the next time the search server gets patched.

Watch for connection errors in the log

The search engine and Magento talk over the network, and that link fails in ways worth watching for. When the cluster is unreachable, slow, or rejecting requests, Magento records it in exception.log as connection or timeout errors against the search host.

A rising count of those errors is an early signal, often before customers report bad search. Ranking the log by frequency surfaces them alongside everything else failing, which is one more reason to read that log by count rather than by time.

Intermittent timeouts usually mean the cluster is under-resourced or contended, not misconfigured. That points at capacity on the search server, rather than a setting inside Magento.

Search health is infrastructure health

Search failures often get diagnosed as Magento bugs when the real problem is the cluster, the disk under it, or an indexer that fell behind. Checking the engine, the cluster status, and the index freshness separates those causes in minutes.

Knowing that your search engine is healthy, current, and actually being fed by the indexer is basic platform hygiene. It is also exactly the kind of dependency a structured review confirms before blaming the application.