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

Exception 如何从Solr已删除的索引文件中恢复?,exception,solr,Exception,Solr,当我删除磁盘上solr的索引文件时(可在/solr/data/index和solr/data/spellchecker中找到),每当我试图向solr发出请求时,solr就会抛出一个异常: java.lang.RuntimeException:java.io.FileNotFoundException:org.apache.lucene.store.NIOFSDirectory@/../solr/data/index: 我发现从中恢复的唯一方法是使用其他地方的索引文件“种子”数据目录。它看起来在哪

当我删除磁盘上solr的索引文件时(可在
/solr/data/index
solr/data/spellchecker
中找到),每当我试图向solr发出请求时,solr就会抛出一个异常:

java.lang.RuntimeException:java.io.FileNotFoundException:org.apache.lucene.store.NIOFSDirectory@/../solr/data/index:


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

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

如果您在rails上使用sunspot Solr,sunspot可以将数据库中的所有数据重新索引到Solr中。但是,solr standalone不知道将数据拉到何处重新索引。您需要备份数据。

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

问候

Rajat

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

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

所以你可能应该:

  • 删除
    索引
    目录或从备份中恢复数据
  • 重新启动服务器(或至少重新加载配置)

  • 这是我的问题,只是给别人一个提示,我必须1)停止solr,2)删除目录,3)启动solr。当我让solr运行并删除目录并尝试强制索引时,它仍然会失败。感谢您的帮助=]这绝对是解决方案!好球:]