- 绿色: 完美, 不需要Debug
- 黄色: 全部主Shard可用, 但副Shard不可用, 什么是主副稍后再说.
- 红色: 部分主Shard不可用.
黄色
一般来说副Shard不可用不会影响到业务.
为了保证高可用, ES会保存多份数据到别的Node. 那么每个Shard就会有多个复制Shard, 这时的复制Shard就是副Shard.
在下面图中就是当number_of_replicas=1
时的情况, 由于此集群中只有一个Node, 所以副Shard不可用, 就会是黄色状态.
可以通过重新设置number_of_replicas
值让Indice正常. 详情可以看这篇文章
curl -X PUT 'http://localhost:9200/user_balance/_settings' -d '{"number_of_replicas": 0}'
红色
主Shard不可用就会影响到业务, 当操作的数据被路由到不可用的主Shard时就会发生TimeOut等错误.
检查磁盘
磁盘如果满了es也会进入红色状态, 这时候需要清理磁盘让出空间, 但我发现清理磁盘后es不会自动恢复, 调用接口依然报错, 还需要重启一下es才行.
其他原因
解决办法参考How to resolve unassigned shards in Elasticsearch.
主要有两个方法:
- 重新路由, 像这样: 官方文档在这
curl -XPOST 'localhost:9200/_cluster/reroute' -d '{ "commands": [ { "allocate_stale_primary": { "index": "user_balance", "shard": 1, "node": "<NODE_NAME>", "accept_data_loss": "true" } } ] }'
- 重启大法: 将Indice先Close再Open.