Solr4.0升级参考
来自Dennis的知识库
2012年12月3日 (一) 05:43Dennis zhuang(讨论 | 贡献)的版本
目录 |
介绍
最近负责solr集群的升级,从solr 3.x的一个shard集群升级到solr 4.0的cloud集群。
Why
Solr 4.0引入了SolrCloud功能,利用zookeeper做到全自动的分区、负载均衡,无需再人工做痛苦的shard切分,也不需要利用Haproxy或者Nginx做前端的负载均衡。这是我们升级的主要动力。Solr 4.0还有一个NRT,近实时搜索的特性也是我们比较关注的。
整个升级主要参考SolrCloud这篇文档。
配置变更
=== schema.xml ===
schema.xml 必须加入_version_字段:
<field name="_version_" type="long" indexed="true" stored="true" multiValued="false"/>
solrconfig.xml
- indexDefaults和mainIndex合并成indexConfig
- 必须加入
<luceneMatchVersion>LUCENE_CURRENT</luceneMatchVersion>
选择你使用的lucene版本号。
- updateHandler必须加入updateLog,用于生成事务日志
<updateLog> <str name="dir">${solr.data.dir:}</str> </updateLog>
- 原来用于复制的replicationHandler可以简化成:
<requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" />
- 添加/get handler:
<requestHandler name="/get" class="solr.RealTimeGetHandler"> <lst name="defaults"> <str name="omitHeader">true</str> </lst> </requestHandler>
- 如果没有添加admin handler,必须添加:
<requestHandler name="/admin/" class="solr.admin.AdminHandlers" />
solr.xml保持默认:
<cores adminPath="/admin/cores"
- DistributedUpdateProcessor会自动添加到update链里,但是你也可以手动添加:
<updateRequestProcessorChain name="sample"> <processor class="solr.LogUpdateProcessorFactory" /> <processor class="solr.DistributedUpdateProcessorFactory"/> <processor class="my.package.UpdateFactory"/> <processor class="solr.RunUpdateProcessorFactory" /> </updateRequestProcessorChain>
- solr.DisMaxRequestHandler相关handler需要删除。
- solr.AnalysisRequestHandler相关handler需要删除。