ElasticSearch 因关闭和打开索引而停机

ElasticSearch Downtime From Closing and Opening Index

我正在管理一个 ElasticSearch 集群,我需要为我的一个索引添加一个分析器。我要更新的特定索引比 3TB 多一点。关闭和重新打开这么大的索引以添加分析器是否会导致停机时间过长?该文档似乎没有说明关闭和打开索引所需的处理。

我已经进行了多次滚动重启并且分片恢复非常快,但我猜测关闭和打开索引不能通过滚动重启一次一个节点完成。

根据open index API

的官方文档

When opening or closing an index, the master is responsible for restarting the index shards to reflect the new state of the index. The shards will then go through the normal recovery process. The data of opened/closed indices is automatically replicated by the cluster to ensure that enough shard copies are safely kept around at all times.

这清楚地说明了这不是一个廉价的操作,如果您的集群中有很多分片并且您的集群状态很大,将其更新到所有节点可能会导致大量开销。

除此之外,打开和关闭索引也会分配分片,再次在 wait for active shards

的同一文档部分中进行了解释

Because opening or closing an index allocates its shards, the wait_for_active_shards setting on index creation applies to the _open and _close index actions as well.

这是一个主要的开销,因为它涉及到移动数据,即集群中的分片,而你是一个非常索引,所以它会导致巨大的数据移动是你的集群。

希望这对您有所帮助。