我们在主从配置中使用Solr 3.6,100个内核,100万个文档,并且需要全天候正常运行时间。我们希望升级到Solr 4.0。
我认为正确的方法是将旧索引的文件系统副本添加到新位置,并使用以下命令配置SolrConfig:
<luceneMatchVersion>LUCENE_33</luceneMatchVersion>
问题1:这会让Solr使用过时的格式吗?这个将索引转换为以在线方式转换为4.0格式吗?
问题2:是否有更好的方法需要更短的停机时间来转换索引?我可以从旧服务器复制到新服务器吗?
问题3:任何人都可以确认Solr 4.0是否可以像我们一样安全使用?
答案 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两个版本(显然是不同的端口),这样你可以试用它并在需要时回滚?