我有一个cron执行solr重建工作。
Cron运行clear index
命令,删除当前索引。现在问题是这导致SOLR搜索功能在网站上停止,直到新的新索引可用。
如何确保旧索引可用,直到新索引不可用为止?
答案 0 :(得分:3)
不要运行clear index命令。发出删除所有文档(例如,通过发送<delete><query>*:*</query></delete>
)而不发出提交。
索引所有新文档,完成后,发出提交。 Solr在发布提交之前不会显示更改,并继续提供旧内容,直到您告诉它删除旧内容并使用新内容。
另一种选择是创建一个新核心作为旧核心的副本,索引到该核心,然后在索引完成时切换核心。这样旧的查询将针对现有核心运行,直到新的核心准备好,然后在切换后您可以删除旧核心。
如果在SolrCloud模式下运行,可以使用collection alias功能实现,如果作为传统单个实例运行,则使用core swap功能。