将Solr从3.6迁移到4.0,这样做的方法,是否安全?

时间:2012-11-05 07:28:38

标签: solr

我们在主从配置中使用Solr 3.6,100个内核,100万个文档,并且需要全天候正常运行时间。我们希望升级到Solr 4.0。


我认为正确的方法是将旧索引的文件系统副本添加到新位置,并使用以下命令配置SolrConfig:

<luceneMatchVersion>LUCENE_33</luceneMatchVersion>

问题1:这会让Solr使用过时的格式吗?这个将索引转换为以在线方式转换为4.0格式吗?


问题2:是否有更好的方法需要更短的停机时间来转换索引?我可以从旧服务器复制到新服务器吗?


问题3:任何人都可以确认Solr 4.0是否可以像我们一样安全使用?

2 个答案:

答案 0 :(得分:1)

如果你保持

<luceneMatchVersion>LUCENE_33</luceneMatchVersion>

而不是使用:

<luceneMatchVersion>LUCENE_40</luceneMatchVersion>

您将无法获得Solr 4 / Lucene 4的全部优势。但是,如果不重建所有索引,则无法切换到LUCENE_40。如果坚持使用LUCENE_33,它仍然会使用旧的索引格式。


对于问题2,如果您有足够的资源,请设置Solr的第二个实例并将索引复制到Solr4。这可以通过使用SolrJ编写Java程序来完成。不确定那里有任何现有的,但可能有。

优势:你可以直播。

缺点:如果您的Solr 3实例不断更新,则效果不佳。

如果您有一个记录每条记录更新日期/时间的时间戳字段,则类似于以下内容:

<field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>

这可以更容易,因为当您正在阅读时,您可以进行查询,其中时间戳小于当前日期,当您迭代结果时,其结果不太可能发生变化(尽管如果现有记录更新或不是不可能的话)删除)。


我们已经运行Solr 4.0超过四个月,现在没有问题。它是一个拥有1.5亿个文档的Solr核心。

答案 1 :(得分:0)

如何在每台机器上运行solr 3.6和4.0两个版本(显然是不同的端口),这样你可以试用它并在需要时回滚?