当我删除磁盘上的solr索引文件时(在/solr/data/index
和solr/data/spellchecker
中找到),solr会在我尝试向它发出请求时抛出异常:
java.lang.RuntimeException:java.io.FileNotFoundException:在org.apache.lucene.store.NIOFSDirectory@/.../solr/data/index中找不到segment *文件:
我发现从中恢复的唯一方法是使用来自其他地方的索引文件“种子”data
目录。它看起来并不重要。一旦我这样做,我可以运行查询来重新加载模式并重新生成索引。这是怎么回事?似乎应该有一种方法告诉solr从头开始重新生成这些文件。也许我错误地认为这些文件不是应用程序本身的一部分(这种名称隐含在“数据”中)?
答案 0 :(得分:49)
如果index
目录存在但是为空,Solr将在启动时抛出该异常。但是,如果删除目录,Solr将在启动时创建它和空段文件。
答案 1 :(得分:0)
如果您在轨道上使用太阳黑子solr,太阳黑子可以将数据库中的所有数据重新索引到solr中。但是,solr standalone不知道将数据拉到重新索引的位置。您需要备份数据。
答案 2 :(得分:0)
如果删除索引,则问题可能在于段文件。文件被物理删除但存在于solr的ram或缓存中。避免直接从solr索引文件中删除文件。使用delete query删除索引,这样做会改变索引的段,你不必重新启动solr
问候
拉杰特
答案 3 :(得分:0)
异常FileNotFoundException表示尝试打开由指定路径名表示的文件失败。因此,您的索引无效或已损坏。
NIOFSDirectory类用于读取和写入索引文件。如果目录尚不存在,则在指定位置创建目录。
所以你应该:
index
目录或从备份恢复数据。