如何从Solr删除的索引文件中恢复?

时间:2010-10-15 00:49:27

标签: exception solr

当我删除磁盘上的solr索引文件时(在/solr/data/indexsolr/data/spellchecker中找到),solr会在我尝试向它发出请求时抛出异常:

  

java.lang.RuntimeException:java.io.FileNotFoundException:在org.apache.lucene.store.NIOFSDirectory@/.../solr/data/index中找不到segment *文件:

我发现从中恢复的唯一方法是使用来自其他地方的索引文件“种子”data目录。它看起来并不重要。一旦我这样做,我可以运行查询来重新加载模式并重新生成索引。这是怎么回事?似乎应该有一种方法告诉solr从头开始重新生成这些文件。也许我错误地认为这些文件不是应用程序本身的一部分(这种名称隐含在“数据”中)?

4 个答案:

答案 0 :(得分:49)

如果index目录存在但是为空,Solr将在启动时抛出该异常。但是,如果删除目录,Solr将在启动时创建它和空段文件。

答案 1 :(得分:0)

如果您在轨道上使用太阳黑子solr,太阳黑子可以将数据库中的所有数据重新索引到solr中。但是,solr standalone不知道将数据拉到重新索引的位置。您需要备份数据。

答案 2 :(得分:0)

如果删除索引,则问题可能在于段文件。文件被物理删除但存在于solr的ram或缓存中。避免直接从solr索引文件中删除文件。使用delete query删除索引,这样做会改变索引的段,你不必重新启动solr

问候

拉​​杰特

答案 3 :(得分:0)

异常FileNotFoundException表示尝试打开由指定路径名表示的文件失败。因此,您的索引无效或已损坏。

NIOFSDirectory类用于读取和写入索引文件。如果目录尚不存在,则在指定位置创建目录。

所以你应该:

  1. 删除index目录或从备份恢复数据。
  2. 重启服务器(或至少重新加载配置)。