Solr部署策略可实现100%正常运行时间,同时创建整个索引



我正在与MVC3电子商务项目一起开发Solr 3.6 ASP.net。

我有一个 appx 的索引。 1 Solr 中的紫胶产品。需求有一些变化,我们需要重建整个索引。整个索引需要将近 1 个半小时,在此期间网站需要关闭。

如何重建索引并保持站点活动,该站点提供旧索引中的内容。在重建整个索引时减少停机时间的最佳实践是什么?我希望我能以 100% 的正常运行时间做到这一点。

编辑我将几个URL作为存储字段存储到Solr数据中,因此,这些URL是在将数据添加到Solr时动态生成的。如果我像 test.example.com 这样的不同子域上部署应用程序,那么它会采用错误的 URL,其中它只能与 example.com 一起使用。因此,托管另一个应用程序对我来说不是一个选择。

您可以在 Solr 中利用多个内核的概念,从而拥有一个用户当前正在搜索的实时核心和一个备用核心,您可以在其中进行架构更改、重新索引等。然后,使用 SWAP 命令,您可以切换实时和备用内核,而无需任何用户停机。交换将由Solr在内部处理,您的用户永远不会注意到差异。

如我所见,有几种方法可以正确解决此问题:

  1. 不要重建整个索引 - 只需在更改时即时更新必要的记录,Solr 可以非常简单地完成
  2. 在不同的端口上创建 2 个 Solr 实例并逐个使用它们。当第一个是重建时,在第二个是使用旧索引。当第一个实例被重建时,你可以使用它,直到第二个实例上的索引被重建。
  3. 将布尔字段添加到名为"old_index"的索引中。然后重新索引开始,更新所有当前记录并设置 old_index=1,然后在配置中写入您查找 old_index==1 记录的某个位置。比开始重新索引,比删除旧记录。它可以通过Solr的deleteByQuery和Solr 4.x中的原子更新或手动更新来完成。

最新更新