6

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


我相信正确的方法是将旧索引的文件系统副本复制到新位置并配置 SolrConfig:

<luceneMatchVersion>LUCENE_33</luceneMatchVersion>

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


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


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

4

2 回答 2

1

如果你保持

<luceneMatchVersion>LUCENE_33</luceneMatchVersion>

而不是使用:

<luceneMatchVersion>LUCENE_40</luceneMatchVersion>

LUCENE_40您将无法获得 Solr 4 / Lucene 4 的全部好处。但是,如果不重建所有索引,您就无法切换到。如果你坚持使用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 核心。

于 2013-04-18T03:58:02.237 回答
0

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

于 2013-04-18T03:07:41.940 回答