Clúster Elasticsearch en red/yellow y shards sin asignar
Síntoma
_cluster/health 'red' o 'yellow'; shards sin asignar; lecturas/escrituras restringidas o datos inaccesibles.
1. Color y causa
yellow = hay shards réplica sin asignar (los datos están, la durabilidad se reduce). red = falta al menos un shard PRIMARIO (esos datos son inaccesibles). Determine primero cuál es el caso y por qué.
Elasticsearch
GET _cluster/health?level=indices
GET _cluster/allocation/explain2. Liste los shards sin asignar y el motivo
La columna unassigned.reason indica la causa raíz (NODE_LEFT, ALLOCATION_FAILED, DISK, etc.).
Elasticsearch
GET _cat/shards?v&h=index,shard,prirep,state,unassigned.reason&s=state3. Corrija las causas habituales
1) Disk watermark → por encima de low, el nodo no recibe nuevos shards; en flood_stage, los índices pasan a solo lectura. 2) Un nodo cayó / salió. 3) La asignación quedó deshabilitada. 4) Número de réplicas > número de nodos elegibles.
4. Corrija
Desbloquee según la causa que corresponda.
Elasticsearch
# If disk space was freed, remove the read-only block (7.4+ also lifts it automatically once below the high watermark):
PUT _all/_settings {"index.blocks.read_only_allow_delete": null}
# If allocation was left restricted, return it to the default (all):
PUT _cluster/settings {"persistent":{"cluster.routing.allocation.enable":null}}
# Retry failed allocations:
POST _cluster/reroute?retry_failed=true5. Si sigue en rojo y el primario realmente se ha perdido
Restaure el índice afectado desde un snapshot o reindexe desde los datos de origen (_reindex). Permanente: alertas de disk watermark, un número de réplicas adecuado (≥1) y monitoreo de la salud de los nodos.