At a glance
The single most important health signal Elasticsearch exposes about itself. Cluster status is a three-state traffic light read straight from GET /_cluster/health: green means every primary and replica shard is allocated and serving, yellow means all primaries are allocated but one or more replicas are missing (redundancy is degraded, data is still fully available), and red means at least one primary shard is unallocated (some data is not searchable or indexable right now). For a platform team this is the “is the database actually OK?” pulse. Green is the only resting state you should accept; anything else needs eyes on it.
Calculation
There is no arithmetic to this card; the value is the literalstatus string returned by GET /_cluster/health. Elasticsearch computes it from shard-allocation state, rolling up per-index status to a single cluster colour using a worst-wins rule:
GET /_cluster/health?level=indices to find which index is responsible.
Worked example
A platform team runs a 3-node Elasticsearch 8.x cluster backing storefront search for a mid-market retailer. The product, category and synonym indexes each have 1 primary + 1 replica. Snapshot taken on 14 Apr 26 at 09:12 BST. At 09:05 a data node (es-data-02) was terminated by the cloud provider for underlying host maintenance. The on-call sees the card flip from green to yellow within the 60-second poll. Running the native check confirms it:- Is it yellow or red? Yellow. No customer-facing outage, so this is an urgent-but-not-pager-at-3am event. (Red would page immediately.)
- Will it self-heal? In Elasticsearch the replicas will automatically reallocate onto the remaining nodes once
index.unassigned.node_left.delayed_timeout(default 60s) elapses, provided there is disk headroom. The team watches Initializing / Relocating Shards climb as the replicas rebuild. - Is there disk headroom to rebuild? They check Storage Usage %. If the surviving nodes are already near the high watermark, the replicas cannot allocate and the cluster will stay yellow until disk is freed or es-data-02 returns.
active_shards_percent_as_number: 100.0.
- Yellow is a redundancy warning, not an outage. Treat it as “fix before the next failure”, not “everyone wake up”. Reserve the pager for red.
- Single-node dev clusters are permanently yellow. A replica cannot allocate onto the same node as its primary, so a one-node cluster with default replica settings can never reach green. That is expected; do not chase it.
- Red means part of your index is offline right now. When the card is red, some shard has no allocatable primary: searches against that index return partial results or errors, and writes to it fail. Drill into Unassigned Shards and the allocation explain API immediately.
Sibling cards platform teams should reference together
Reconciling against the source
Where to look in Elasticsearch’s own tooling:In managed services the same colour appears on the console health page: Elastic Cloud deployment health, AWS OpenSearch/Elasticsearch Service “Cluster health” (theGET /_cluster/healthfor the authoritative cluster colour and shard counts. This is the exact call Vortex IQ makes.GET /_cat/health?vfor a one-line human-readable summary (status, node count, active shard %).GET /_cluster/health?level=indicesto find which index is responsible for a yellow or red status.GET /_cluster/allocation/explainto get Elasticsearch’s own reason why a specific shard cannot be allocated.
ClusterStatus.green/yellow/red CloudWatch metrics), and Bonsai’s cluster overview.
Why our value may legitimately differ from a manual check:
Cross-connector reconciliation:
Known limitations / FAQs
My single-node dev cluster is permanently yellow. Is something broken? No. A replica shard is never allocated on the same node as its primary, so a one-node cluster with the default 1 replica can never go green: the replicas are always unassigned. This is expected. Either accept yellow on dev, or setindex.number_of_replicas: 0 on those indexes so the cluster reports green with no redundancy.
The card is yellow but search still works fine. Why is it not green?
Yellow means all primaries are allocated (so search and indexing work) but at least one replica is missing. You have lost redundancy, not availability. The card is correctly warning you that a further node failure could cause data loss. Fix the underlying cause (usually a lost node or no disk headroom) to restore green.
The card went red. What is the first thing I should run?
GET /_cluster/allocation/explain. It returns Elasticsearch’s own reason a primary shard cannot be allocated, the most common being the flood-stage disk watermark (node went read-only because disk hit 95%), a corrupted shard, or all copies on lost nodes. Pair with Storage Usage % and Unassigned Shards.
Why does one small unimportant index make the whole cluster yellow?
Cluster status is worst-wins across all indexes. One unallocated replica anywhere turns the cluster yellow even if 99% of your data is healthy. Use GET /_cluster/health?level=indices to find the culprit. If the index genuinely does not need a replica (a transient log or scratch index), set its replica count to 0.
Can the cluster be green and still be slow or unhealthy?
Yes, and this is the most important limitation to understand. Cluster status reflects shard allocation only. A green cluster can have 95% JVM heap, multi-second GC pauses, saturated thread pools and slow queries. Green means “all data is allocated and available”, not “everything is fast”. Pair this card with JVM Heap Used %, Search Latency p95 (ms) and Elasticsearch Health Score for the full picture.
During a rolling restart the card flickers between green and yellow. Is that a problem?
No. As each node leaves and rejoins, its shards briefly go unassigned then reallocate, so the cluster cycles yellow then green per node. This is normal during planned maintenance. The 5-minute sustained condition on the Cluster Not Green alert card exists precisely to avoid paging on these transient flickers.
Does a yellow cluster auto-recover, or do I have to do something?
Usually it auto-recovers. Elasticsearch reallocates missing replicas onto available nodes automatically once the delayed-allocation timeout passes, provided there is disk headroom and enough nodes. It will stay yellow only if it cannot place the replicas: no spare node, no disk room, or an allocation rule blocking placement. If yellow persists beyond a few minutes after a node returns, run the allocation explain API.