将 solr 1.4 索引升级到 solr 3.3?
Posted
技术标签:
【中文标题】将 solr 1.4 索引升级到 solr 3.3?【英文标题】:Upgrade solr 1.4 index to solr 3.3? 【发布时间】:2011-10-02 17:41:21 【问题描述】:我有一个使用 apache solr 1.4 构建的现有索引。
我想在 3.3 版中使用这个现有索引。你知道3.x之后索引格式发生了变化,那怎么可能呢?
我已使用 Luke 将现有索引(即 1.4 版本)导出到 XML。
【问题讨论】:
【参考方案1】:如果你有数据:最好的方法是索引 solr 3.3 中的所有新数据 您可以使用数据导入处理程序来索引您导出的 XML 文件。
如果建立一个新的索引不是你的解决方案,你有不同的可能性:
据我所知,Solr 3.3 可以读取旧索引。 所以一个想法可能是使用分片。一个用于旧数据(只读)的分片,另一个用于新数据的分片。不幸的是,在此解决方案中,您将无法修改旧数据。
【讨论】:
1.我将旧的schema.xml(1.4 v)复制到新服务器(3.3)2.我将旧索引复制到3.3中的新索引目录并重新启动服务器,一切正常!奇怪的是,我在 3.3 发行说明中的某处读到新索引结构与旧索引结构不兼容......无论如何,我很高兴一切顺利:) “新的索引结构与旧的不兼容”……是的……我想,没错。但我认为,您的 3.3 系统运行在类似于“兼容模式”的状态下,并且不使用新的索引格式。可能,您的索引仍然是 1.4,这在 lucene 4 中不受支持 - 如果您考虑将来升级。 你是对的,但是如何升级呢?这是我的主要问题。 不确定,但如果你去 3.x,更新意味着重新索引。我不确定 solr4 是否会提供迁移工具。【参考方案2】:有两种方法可以做到这一点:
如果您的索引未优化,则只需对其进行优化 - 这将一路升级文件格式。
如果您的索引已经优化,则不能这样做。相反,请使用 solr 提供的命令行工具(您的路径可能与我的不同
java -cp work/Jetty_0_0_0_0_8983_solr.war__solr__k1kf17/webapp/WEB-INF/lib/lucene-core-3.3.0.jar org.apache.lucene.index.IndexUpgrader -verbose /path/to/index/directory
但是,请注意,这只会更改文件格式 - 它不会停止弃用警告,因为除非您另有说明,否则 solrconfig.xml 默认仍假定您使用的是旧索引格式。见http://www.mail-archive.com/dev@lucene.apache.org/msg23233.html
您的日志文件中可能仍然会出现很多这样的行:
WARNING: LowerCaseFilterFactory is using deprecated LUCENE_24 emulation. You should at some point declare and reindex to at least 3.0, because 2.x emulation is deprecated and will be removed in 4.0
直到您告诉 solrconfig.xml 您已准备好使用新索引格式的所有功能。为此,您可以将以下内容添加到 solrconfig.xml(在顶层,就在 abortOnConfigurationError 设置之后)。
<!-- Controls what version of Lucene various components of Solr
adhere to. Generally, you want to use the latest version to
get all bug fixes and improvements. It is highly recommended
that you fully re-index after changing this setting as it can
affect both how text is indexed and queried.
-->
<luceneMatchVersion>LUCENE_33</luceneMatchVersion>
【讨论】:
以上是关于将 solr 1.4 索引升级到 solr 3.3?的主要内容,如果未能解决你的问题,请参考以下文章
使用 datastax 进行错误的 SOlr 索引。从 1 个节点扩展到 2 个 cassandra 节点和 1 个搜索节点