ES failed shard on node[XXX]: failed recovery, failure RecoveryFailedException
原因是:某节点上的分片尝试恢复5次没有成功,然后就丢弃不管。导致该分片无法恢复。
解决办法:重新恢复失败的分片,一会集群就恢复为green
POST /_cluster/reroute?retry_failed=true
es 剩余磁盘空间达到es最小值,添加数据被block
剩余磁盘空间达到es最小值,添加数据被block
查看集群索引是否依然为read_only状态,如果是请执行以下命令,将集群中所有索引的index.blocks.read_only_allow_delete属性设置为null,使集群中不再存在read_only状态的索引。
PUT _all/_settings
{"index.blocks.read_only_allow_delete": null}
删除单个index全部内容,或删除无用的索引
DELETE /new_listings_investment
{ "query": { "match_all": {} } }
若集群是否依然为Red状态,执行以下命令,查看集群中是否存在未分配的分片。
_cat/allocation?v
如果存在未分配的分片,执行以下命令,查看未分配分片的原因。
GET _cluster/allocation/explain
如果使用 ES 的默认设置,ES 为了保持节点可用,设置了几个存储的安全值。分别为:
cluster.routing.allocation.disk.watermark.low: 默认 85% 当达到时,replica 不再写入 .导致新的分片无法分配。
cluster.routing.allocation.disk.watermark.high: 默认 90%. 当达到时Elasticsearch会尝试将对应节点中的分片迁移到其他磁盘使用率比较低的数据节点中
cluster.routing.allocation.disk.watermark.flood_stage: 默认 95% 系统会对Elasticsearch集群中的每个索引强制设置read_only_allow_delete属性,此时索引将无法写入数据,只能读取和删除对应索引