Lucene索引备份


问题内容

在不使索引离线的情况下备份Lucene索引的最佳实践是什么(热备份)?


问题答案:

您不必停止IndexWriter即可备份索引。

只需使用SnapshotDeletionPolicy,它就可以“保护”给定的提交点(及其包含的所有文件),以免被删除。然后,将该提交点中的文件复制到您的备份中,最后释放该提交。

如果备份需要一段时间才能运行,这很好-
只要您不使用SnapshotDeletionPolicy释放提交点,IndexWriter就不会删除文件(即使例如,它们已经合并在一起)。

这样可以为您提供一致的备份,这是索引的时间点映像,而不会阻止正在进行的索引编制。

我在《 Lucene in
Action》(第2版)中写过有关此内容的文章,该书摘录自http://www.manning.com/hatcher3(“使用Lucene进行热备份”
)中的书(免费),该书对此进行了详细说明。