我有一个索引,有5个主碎片,没有副本。
我的一个碎片(shard 1)处于未分配状态。当我检查日志文件时,我发现以下错误:
2 obv65.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;]
当我检查索引时,我找不到101a65.si shard 1的文件。
我无法找到丢失的.si文件。我试了很多次,但无法再次分配碎片1。
还有其他方法让碎片1重新分配吗?还是需要删除整个碎片1数据?
请建议一下。
发布于 2017-03-21 10:49:08
通常,在堆栈跟踪中,您应该看到损坏碎片的路径,类似于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应该有助于碎片的恢复。如果您仍然看到它未被分配,请尝试将此命令发送到您的集群(通常按照文献资料,它应该可以工作,尽管我不确定ES 1.x语法和命令):
POST _cluster/reroute
{
"commands" : [
{
"allocate" : {
"index" : "myIndexName",
"shard" : 1,
"node" : "myNodeName",
"allow_primary": true
}
}
]
}https://stackoverflow.com/questions/42920662
复制相似问题