我有一个包含5个主分片且没有副本的索引。
我的一个碎片(碎片1 )处于未分配状态。当我检查日志文件时,我发现以下错误:
2obv65.nvd,_2vfjgt.fdx,_3e3109.si,_3dwgm5_Lucene45_0.dvm,_3aks2g_Lucene45_0.dvd,_3d9u9f_76.del,_3e30gm.cfs,_3cvkyl_es090_0.tim,_3e309p.nvd,_3cvkyl_es090_0.blm]];嵌套:FileNotFoundException [_101a65.si]; ]
当我检查索引时,我找不到碎片1 的 101a65.si 文件。
我无法找到丢失的.si
文件。我尝试了很多,但无法再次分配碎片1 。
还有其他方法可以再次分配分片1 吗?或者我是否需要删除整个分片1 数据?
请建议。
答案 0 :(得分:0)
通常在堆栈跟踪中,您应该看到损坏的分片的路径,例如MMapIndexInput(path="path/to/es/db/nodes/node_number/indices/name_of_index/1/index/some_file)
(此处 1 是分片编号)
通常删除path/to/es/db/nodes/node_number/indices/name_of_index/1
应该有助于分片恢复。如果您仍然看到它未分配,请尝试将此命令发送到您的群集(通常按照the documentation,它应该可以工作,但我不确定ES 1.x语法和命令):
POST _cluster/reroute
{
"commands" : [
{
"allocate" : {
"index" : "myIndexName",
"shard" : 1,
"node" : "myNodeName",
"allow_primary": true
}
}
]
}