繁体   English   中英

现有的SOLR集合未获取Zookeeper架构更改

[英]Existing SOLR collection not picking up Zookeeper schema change

我有一个在三个独立节点上运行的本地solr云集群: 33.33.3[3-5]:8080此集群由本地3节点zookeeper集合管理,生活在: 33.33.3[0-2]:2181

我正在尝试进行架构修改 - 但是,我无法让SOLR接收新的更改。 这就是我正在做的事情

首先,我将一个配置集上传到zookeeper:

/opt/src/solr/scripts/cloud-scripts/zkcli.sh -zkhost 33.33.33.30:2181,33.33.33.31:2181,33.33.33.32:2181 -cmd upconfig -confdir /opt/src/solr/solr/conf/ -confname test_conf

然后我在SOLR中创建一个集合:

http://33.33.33.33:8080/solr/admin/collections?action=CREATE&name=test_collection&numShards=1&replicationFactor=3

一切正常。 由于zookeeper中只有一个配置,因此会在创建时自动映射到集合。 很酷。

但现在我想修改test_collection的模式。 所以,我ssh到我的一个SOLR框中,在vim中浏览到/opt/src/solr/solr/conf/ open schema.xml ,然后删除一个字段。 然后我再次上传配置(使用相同的名称,以便覆盖旧的配置):

/opt/src/solr/scripts/cloud-scripts/zkcli.sh -zkhost 33.33.33.30:2181,33.33.33.31:2181,33.33.33.32:2181 -cmd upconfig -confdir /opt/src/solr/solr/conf/ -confname test_conf

现在我重新加载核心:

http://33.33.33.33:8080/solr/admin/collections?action=RELOAD&name=test_collection

并且zookeeper接受了这些变化。 我可以从zookeeper下载文件,并且有更改。 我可以在SOLR管理员( cloud>tree>configs>schema.xmltest_collection>files>schema.xml )中浏览配置,并反映更改。 但是,如果我点击这条路线:http: http://33.33.33.33:8080/solr/test_collection/schema/fieldshttp://33.33.33.33:8080/solr/test_collection/schema/fields该字段仍在那里。 此外,如果我在SOLR管理员中转到test_collection>schema browser ,那么该字段仍会在那里列出。

这里发生了什么?

编辑:

如果我查看SOLR管理员中的日志,我会看到以下必须相关的内容......

2/23/2015, 3:06:46 PM
WARN
OverseerCollectionProcessor
OverseerCollectionProcessor.processMessage : reloadcollection ,​ {
2/23/2015, 3:06:46 PM
WARN
ManagedIndexSchemaFactory
The schema has been upgraded to managed,​ but the non-managed schema schema.xml is still loadable. PLEASE REMOVE THIS FILE.
2/23/2015, 3:06:46 PM
WARN
RequestHandlers
Multiple requestHandler registered to the same name: /update/json ignoring: org.apache.solr.handler.UpdateRequestHandler
2/23/2015, 3:06:46 PM
WARN
RequestHandlers
Multiple requestHandler registered to the same name: /update ignoring: org.apache.solr.handler.UpdateRequestHandler
2/23/2015, 3:06:46 PM
WARN
RequestHandlers
Multiple requestHandler registered to the same name: /replication ignoring: org.apache.solr.handler.ReplicationHandler

在过去的几个月里,我花了这么多时间与SOLR合作,最终我想到了这一点。

让我们分解一下我所看到的问题。

我正在将配置上传到zookeeper,在solr中创建一个集合,并将两者连接在一起。 然后我会改变架构 - 再次上传它,重新加载solr核心 - 什么都不会发生!

这是其核心 - 用户错误和对一个主要功能的误解。

我在SOLR中使用托管架构 这意味着我可以在较新版本的SOLR中利用模式API。 对于任何感兴趣的人 - 当您使用托管架构时 - SOLR实际上会复制您编辑的架构 - 而这正是更改的地方。 不是你原来的架构(仍然在http://33.33.33.33:8080/solr/test_collection/schema/fields上公开)。

如果您希望看到最近的更改生效。 查看zookeeper中config文件夹中的managed-schema文件。

谢谢大家的帮助。

我认为你缺少步骤linkconfig ,它将配置集链接到集合。

因此,在开始时,在upconfig之后,在创建集合之前,您需要执行linkconfig,如下所示:

/opt/src/solr/scripts/cloud-scripts/zkcli.sh -zkhost 33.33.33.30:2181,33.33.33.31:2181,33.33.33.32:2181 -cmd linkconfig -collection test_collection -confname test_conf

然后在更新配置之后,您不必再次进行linkconfig,只需执行upconfig,然后像您一样重新加载集合。 在创建集合之前,刚刚开始缺少此步骤。

有关集合API的完整参考,请参阅此处: https//cwiki.apache.org/confluence/display/solr/Collections+API

可能您的SOLR“test_collection”中有数据使用您删除的字段。

尝试清除您的测试集。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM