es解决分片恢复失败问题

youncyb 发布于 2023-02-01 2494 次阅读 大数据


ES解决恢复分片失败的问题

1. 问题描述

当集群某台节点离线后,又加入集群时,因为分片恢复问题,会遇到如下问题:

有时候,即使我们调用了retry_failedAPI,仍然无法恢复分片。

 

2. 解决方法

方法1:重启节点

该方法通过重启节点可以快速释放被锁住的内存。但是缺点是:如果多台节点都无法恢复分片,那么就需要重启多台节点。

方法2:手动清理内存

要知道分片被锁住,是因为ES线程正在对某个shard做bulk或者scroll等长时间的操作,导致该shard无法被其他线程获取。此时需要做以下步骤:

  1. 关闭索引的写入功能

  2. 关闭该索引

  3. 等待10分钟,调用:

  4. 如果还没有恢复,直接删除游标的上下文。(此操作会导致所有索引的游标都被删除)

  5. 恢复索引设置