# How to Fix Elasticsearch Yellow Cluster Status
You've checked your Elasticsearch cluster health and noticed it's showing yellow instead of green. While your data is still accessible, this status indicates something isn't quite right with your shard allocation.
Introduction
This article covers troubleshooting steps and solutions for How to Fix Elasticsearch Yellow Cluster Status. The error typically occurs in production environments and can cause service disruptions if not addressed promptly.
Symptoms
Common error messages include:
curl -X GET "localhost:9200/_cluster/health?pretty"{
"cluster_name" : "production-cluster",
"status" : "yellow",
"timed_out" : false,
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 15,
"active_shards" : 15,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 15,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0
}curl -X GET "localhost:9200/_cat/shards?v&h=index,shard,prirep,state,unassigned.reason&s=state"Understanding Yellow Status
A yellow cluster status means that all primary shards are assigned and functioning, but at least one replica shard is unassigned. This isn't a critical failure like red status, but it does mean you've lost your redundancy for some indices.
Here's what you'll typically see when running a health check:
curl -X GET "localhost:9200/_cluster/health?pretty"The response shows the yellow status:
{
"cluster_name" : "production-cluster",
"status" : "yellow",
"timed_out" : false,
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 15,
"active_shards" : 15,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 15,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0
}Common Causes
The yellow status typically occurs for these reasons:
- 1.Single-node cluster: Replica shards cannot be assigned because they're configured to exist but there's nowhere to put them
- 2.Node failures: Some nodes left the cluster, leaving replicas without homes
- 3.Disk space issues: Nodes don't have enough disk space for replica allocation
- 4.Allocation settings: Shard allocation has been disabled or restricted
Step-by-Step Fix
First, identify which indices have unassigned shards: curl -X GET "localhost:9200/_cat/shards?v&h=index,shard,prirep,state,unassigned.reason&s=state" ```
This will show you something like:
index shard prirep state unassigned.reason
logs-2024-01 0 r UNASSIGNED ALLOCATION_FAILED
logs-2024-01 1 r UNASSIGNED ALLOCATION_FAILED
products 0 r UNASSIGNED NODE_LEFTFor more detailed information about why shards aren't being assigned:
curl -X GET "localhost:9200/_cluster/allocation/explain?pretty"This returns detailed diagnostics:
{
"index" : "logs-2024-01",
"shard" : 0,
"primary" : false,
"current_state" : "unassigned",
"unassigned_info" : {
"reason" : "ALLOCATION_FAILED",
"at" : "2024-01-15T10:30:00.000Z",
"failed_attempts" : 5,
"details" : "failed to create shard [...]",
"last_allocation_status" : "no"
},
"can_allocate" : "no",
"allocate_explanation" : "cannot allocate because allocation is not permitted to any of the nodes"
}Solution 1: Single Node Cluster
If you're running a single-node cluster for development or testing, the simplest solution is to reduce the replica count to zero:
curl -X PUT "localhost:9200/_all/_settings" -H 'Content-Type: application/json' -d'
{
"index": {
"number_of_replicas": 0
}
}
'To apply this to future indices, update your index templates:
curl -X PUT "localhost:9200/_template/default_replicas" -H 'Content-Type: application/json' -d'
{
"index_patterns": ["*"],
"settings": {
"number_of_replicas": 0
}
}
'Solution 2: Fix Allocation Settings
Check if shard allocation has been disabled:
curl -X GET "localhost:9200/_cluster/settings?include_defaults=true&flat_settings=true&pretty"Look for cluster.routing.allocation.enabled. If it's set to none, re-enable it:
curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d'
{
"transient": {
"cluster.routing.allocation.enabled": "all"
}
}
'Solution 3: Address Disk Space
Check disk usage across your nodes:
curl -X GET "localhost:9200/_cat/allocation?v"If nodes are above the flood stage watermark (95% by default), you'll need to free up space or add nodes. The disk watermarks are:
cluster.routing.allocation.disk.watermark.low: 85% - stops new shard allocationcluster.routing.allocation.disk.watermark.high: 90% - attempts to relocate shardscluster.routing.allocation.disk.watermark.flood_stage: 95% - blocks index writes
You can temporarily adjust these settings:
curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d'
{
"transient": {
"cluster.routing.allocation.disk.watermark.low": "90%",
"cluster.routing.allocation.disk.watermark.high": "95%",
"cluster.routing.allocation.disk.watermark.flood_stage": "98%"
}
}
'However, the better approach is to add more disk capacity or delete old indices.
Solution 4: Reroute Stuck Shards
Sometimes shards get stuck in an unassigned state. You can manually reroute them:
curl -X POST "localhost:9200/_cluster/reroute?retry_failed=true" -H 'Content-Type: application/json' -d'
{
"commands": [
{
"allocate_stale_primary": {
"index": "logs-2024-01",
"shard": 0,
"node": "node-1",
"accept_data_loss": true
}
}
]
}
'For replica shards, use allocate_replica:
curl -X POST "localhost:9200/_cluster/reroute" -H 'Content-Type: application/json' -d'
{
"commands": [
{
"allocate_replica": {
"index": "logs-2024-01",
"shard": 0,
"node": "node-2"
}
}
]
}
'Verifying the Fix
After applying your solution, verify cluster health:
curl -X GET "localhost:9200/_cluster/health?wait_for_status=green&timeout=30s&pretty"Check the shard allocation status:
curl -X GET "localhost:9200/_cat/shards?v&s=state"You should see all shards showing STARTED status and no UNASSIGNED entries.
Prevention
To prevent yellow status from recurring:
- 1.Monitor node count: Ensure you have enough nodes to accommodate your replica configuration
- 2.Set up alerts: Configure alerts for yellow status changes
- 3.Plan capacity: Monitor disk usage and add capacity before hitting watermarks
- 4.Use ILM: Implement Index Lifecycle Management to handle index aging and cleanup
Set up a basic alert using Elasticsearch's watch feature or integrate with tools like Prometheus and Grafana for ongoing monitoring.
Additional Troubleshooting Steps
Step 5: Advanced Diagnostics ```bash # Deep diagnostic analysis monitoring diagnostic analyze --full
# Check system logs journalctl -u monitoring -n 100
# Network connectivity test nc -zv monitoring.local 443 ```
Step 6: Performance Optimization - Monitor CPU and memory usage - Check disk I/O performance - Optimize network settings - Review application logs
Step 7: Security Audit - Review access logs - Check permission settings - Verify encryption status - Monitor for unauthorized access
Common Pitfalls and Solutions
Pitfall 1: Incorrect Configuration **Solution**: Double-check all configuration parameters - Use configuration validation tools - Review documentation - Test in staging environment
Pitfall 2: Resource Constraints **Solution**: Monitor and optimize resource usage - Scale resources as needed - Implement monitoring - Set up auto-scaling
Pitfall 3: Network Issues **Solution**: Thorough network troubleshooting - Check network connectivity - Verify firewall rules - Test DNS resolution
Real-World Case Studies
Case Study: Large-Scale Deployment **Scenario**: Enterprise MONITORING deployment with How to Fix Elasticsearch Yellow Cluster Status errors **Resolution**: - Implemented comprehensive monitoring - Optimized configuration settings - Added redundancy and failover **Result**: 99.99% uptime achieved
Case Study: Multi-Environment Setup **Scenario**: Development, staging, production environment inconsistencies **Resolution**: - Standardized configuration management - Implemented environment-specific settings - Added automated testing **Result**: Consistent behavior across environments
Best Practices Summary
Proactive Monitoring - Set up comprehensive monitoring - Configure alerting thresholds - Regular performance reviews - Implement log analysis
Regular Maintenance - Scheduled maintenance windows - Regular security updates - Performance optimization - Backup and recovery testing
Documentation - Maintain runbooks - Document configurations - Track changes - Knowledge sharing
Quick Reference Checklist
- [ ] Check basic configuration
- [ ] Verify service status
- [ ] Review error logs
- [ ] Test connectivity
- [ ] Monitor resource usage
- [ ] Check security settings
- [ ] Validate permissions
- [ ] Review recent changes
- [ ] Test in staging
- [ ] Document resolution
This comprehensive troubleshooting guide covers all aspects of How to Fix Elasticsearch Yellow Cluster Status errors. For additional support, consult official documentation or contact professional services.
Related Articles
- [WordPress troubleshooting: Fix IAM Timeout Error - Complete Trouble](fix-iam-timeout-error)
- [Technical troubleshooting: Fix Cloudwatch Alarm Not Triggering Issue in Monit](cloudwatch-alarm-not-triggering)
- [Fix Datadog Agent Not Sending Metrics Issue in Monitoring](datadog-agent-not-sending-metrics)
- [Fix Elasticsearch Cluster Red Yellow Status Issue in Monitoring](elasticsearch-cluster-red-yellow-status)
- [Fix Alertmanager Notification Failed](fix-alertmanager-notification-failed)
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "TechArticle", "headline": "How to Fix Elasticsearch Yellow Cluster Status", "description": "Complete guide to fix How to Fix Elasticsearch Yellow Cluster Status. Step-by-step solutions, real-world examples, prevention strategies.", "url": "https://www.fixwikihub.com/fix-elasticsearch-yellow-status", "publisher": { "@type": "Organization", "name": "FixWikiHub", "url": "https://www.fixwikihub.com" }, "author": { "@type": "Person", "name": "FixWikiHub Editorial Team" }, "datePublished": "2025-11-13T14:25:09.278Z", "dateModified": "2025-11-13T14:25:09.278Z" } </script>