在创建整个索引时,Solr部署策略可实现100%Up Time

时间:2012-08-13 10:31:18

标签: asp.net-mvc-3 solr solrnet uptime

我正在使用ASP.net MVC3电子商务项目开发Solr 3.6。

我有一个appx索引。 1个Lac产品在Solr。需求有一些变化,我们需要重建整个索引。整个索引几乎是1&半小时期间,网站需要关闭。

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

修改 我将几个URL存储到Solr数据中作为存储字段,因此,它们是在向Solr中添加数据时动态生成的。如果我在不同的子域(例如test.example.com)上部署应用程序,那么它将使用错误的URL,其中它仅适用于example.com。所以托管另一个应用程序对我来说不是一个选择。

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

正如我所看到的,有几种方法可以正确解决这个问题:

  1. 不要重建整个索引 - 只需在更改时即时更新必要的记录,Solr可以做到非常简单
  2. 在不同的端口上创建2个Solr实例并逐个使用它们。首次重建时,第二次可以使用旧索引。当第一次重建时,您可以使用它直到重建第二个实例的索引。
  3. 将boolean字段添加到名为的索引,例如“old_index”。并且whem重新索引开始,更新所有currrent记录并设置old_index = 1,然后在配置中的某处写入您使用old_index == 1查找记录。比开始重建索引,比删除旧记录。可以使用Solr的deleteByQuery和Solr 4.x中的自动更新或手动更新来完成。