代码之家  ›  专栏  ›  技术社区  ›  davidtbernal

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

  •  17
  • davidtbernal  · 技术社区  · 14 年前

    当我在磁盘上删除solr的索引文件时, /solr/data/index solr/data/spellchecker ,solr在我尝试向它发出请求时抛出异常:

    java.lang.runtimeexception:java.io.filenotfoundexception:在org.apache.lucene.store.niofsdirectory@//solr/data/index中找不到段*文件:

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

    4 回复  |  直到 9 年前
        1
  •  49
  •   Mauricio Scheffer    14 年前

    如果 index 目录存在,但为空。但是,如果删除目录,solr将在启动时创建它和空段文件。

        2
  •  0
  •   Natus Drew    11 年前

    如果您在轨道上使用太阳黑子solr,太阳黑子可以将数据库中的所有数据重新索引到solr中。但是,Solr Standalone不知道从何处提取数据以重新建立索引。您需要备份数据。

        3
  •  0
  •   Rajat Rastogi    11 年前

    如果删除索引,则段文件可能存在问题。这些文件在物理上被删除,但存在于SOLR的RAM或缓存中。避免直接从solr索引文件中物理删除文件。使用delete query删除索引,这样做将更改索引的段,并且不必重新启动solr

    当做

    拉雅

        4
  •  0
  •   kenorb    9 年前

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

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

    所以你应该:

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