手动执行forceMerge索引后,由于磁盘空间不够失败,索引变red,磁盘空间也没有释放,请问怎么恢复?

Elasticsearch | 作者 showme | 发布于2022年01月03日 | 阅读数:115

软件版本 6.2.4;
运行环境 centos;
场景/上下文;手动执行forceMerge索引后,单个索引比较大,由于磁盘空间不够失败,索引变red状态,分片都是未分配UNASSIGNED状态;磁盘空间也没有释放。错误信息:"status":"INTERNAL_SERVER_ERROR","reason":{"type":"illegal_state_exception","reason":"this writer hit an unrecoverable error; cannot complete forceMergeDeletes","caused_by":{"type":"i_o_exception","reason":"No space left on device"}
请问怎么能恢复索引数据?
已邀请:

zmc - ESPAAS开发

赞同来自:

如果是docker的话,扩容是最直接的;物理机的话没法扩容,只能想其他办法;
 
其实没太理解为什么会red,最多磁盘写爆了导致readonly,如果你这时候还有持续的写入的话,恰好磁盘写爆的节点的分片是primary,这样数据写不进去会导致red;如果是这样的话看下副本分片所在节点是否磁盘够,够的话看下是否还在forcemerge,在的话可以取消forcemerge,然后将主分片设置为一个空的分片并且指定到机器上,然后你看下写满磁盘的那个机器数据是否可以字段清理掉,不能的话你手动去目录下删掉那个shard就好了
 
POST /_cluster/reroute
{
"commands" :[
{
"allocate_empty_primary" :
{
"index" : "index_name",
"shard" : 0,
"node": "指定分配到的节点",
"accept_data_loss": true
}
}
]
}

 
 
 

要回复问题请先登录注册