使用IndexNotFoundException

时间:2017-05-03 06:19:49

标签: solr solr4 sunspot-solr

我在独立服务器上运行SOLR,我正在测试备份和恢复,以便采取我在命令下面使用的备份

curl 'http://localhost:8983/solr/coreName/replication?command=backup'

以上命令可以成功进行备份。但我使用下面的命令来恢复以前采取的备份。

curl 'http://localhost:8983/solr/coreName/replication?command=restore'

使用了最新的备份并成功恢复。但我想在命令中传递备份名称,所以我尝试了下面的命令

curl 'http://localhost:8983/solr/coreName/replication?command=restore&name=snapshot.2017xxxxxx'` 

当我运行此备份时,如果检查恢复状态

,则备份错误如下所示
<str name="status">failed</str><str name="exception">org.apache.lucene.index.IndexNotFoundException: no segments* file found in MMapDirectory@/database/solr/data/UMB/data/snapshot.snapshot.20170503060914378 lockFactory=org.apache.lucene.store.NativeFSLockFactory@9ee14c9: files: []</str></lst>

有人可以建议我哪里出错了。 SOLR托管在Cent OS上。

谢谢

1 个答案:

答案 0 :(得分:1)

我发现了造成这些问题的原因。当我们传递备份名称而不是传递像snapshot.2017xxxxx这样的完整名称时,在Linux上托管的SOLR我们只需要排除快照并仅传递时间戳详细信息。命令如下所示

foreach (Object item in sknBox.SelectedItems)            
{              
    Console.WriteLine((item as MyObject).Value); // or whatever it happens to be
    Console.WriteLine((item as MyObject).Label);     
}