Elasticsearch 悬挂索引(Dangling Indices)解析与管理
1. 悬挂索引的定义
悬挂索引(Dangling Indices)是指存在于节点上但未被集群元数据识别的索引分片。这些索引分片不会参与到集群的正常索引操作中。
2. 悬挂索引的产生原因
悬挂索引通常由以下几种情况产生:
-
节点离线后重新加入集群:当某个节点因故障(如宕机)暂时离开集群,而该节点上存有的某些索引分片在集群的其他节点上没有副本时,这些索引分片在节点重新加入集群后会被标记为“悬挂”状态。
-
删除索引数量超过限制:如果在某个节点离线期间删除的索引数量超过了
cluster.indices.tombstones.size
的限制,这些索引在节点重新加入集群后也会变成悬挂索引。 -
集群丢失主节点:如果原始集群丢失了所有主节点,而某个节点被添加到另一个集群中,该节点上的索引数据可能不会被新集群的元数据识别,从而变成悬挂索引。
-
从备份还原:从备份中还原了老的索引文件,但这些索引文件未被集群元数据识别。
3. 悬挂索引的管理方法
Elasticsearch 提供了专门的悬挂索引 API 来手动管理和恢复这些索引,以确保数据的安全性和一致性。
-
列出悬挂索引:
bash复制
GET /_dangling
该 API 会列出所有悬挂索引,返回结果包括索引名称、UUID、创建时间等信息。
-
导入悬挂索引:
bash复制
POST /_dangling/<index-uuid>?accep