【问题标题】:Existing SOLR collection not picking up Zookeeper schema change现有 SOLR 集合未获取 Zookeeper 架构更改
【发布时间】:2015-04-16 12:29:34
【问题描述】:

我有一个在三个独立节点上运行的本地 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 框,浏览到 /opt/src/solr/solr/conf/ 在 vi​​m 中打开 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 admin 中浏览配置(cloud>tree>configs>schema.xml AND test_collection>files>schema.xml)并反映更改。但是,如果我点击这条路线:http://33.33.33.33:8080/solr/test_collection/schema/fields 该字段仍然存在。此外,如果我在 SOLR 管理员中转到 test_collection>schema browser,该字段仍然会在那里列出。

这是怎么回事?

编辑:

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

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

【问题讨论】:

  • 请求.../collections?action=RELOAD时得到什么响应?
  • 上述请求是否成功?如果您重新加载 cores 而不是 .../admin/cores?action=RELOAD&core=...,会发生什么?
  • @n0tting 我得到以下回复:0418 03430 int> 351
  • @n0tting 管理核心重新加载也很好。但还是没有变化
  • 检查来自 SOLR 管理员的日志编辑

标签: solr schema config apache-zookeeper solrcloud


【解决方案1】:

我认为您缺少步骤 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

【讨论】:

  • 有关命令实用程序参考,请查看此处:cwiki.apache.org/confluence/display/solr/Command+Line+Utilities
  • 配置链接很好,因为我只上传了一个。如果您查看文档,它默认为现有配置 IF 只有一个。如果有多个,则默认为集合的名称。话虽如此,在上传和创建集合之后,我仍然尝试了多次。应该注意的是,您发布的命令是将现有集合链接到上传的配置
  • 它不链接现有集合,如果您查看此处的快速指南:wiki.apache.org/solr/SolrCloudTomcat 它在创建集合之前的第 8 步中说您应该链接配置。而且我总是在创建集合之前进行链接配置,并且更新对我来说很好。我仍然相信这是缺少的一步
  • 我会再试一次。但在这里:wiki.apache.org/solr/SolrCloud 它说“如果只有一个 'conf set' 存在,一个集合将自动链接到它。”
【解决方案2】:

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

尝试清除您的测试集合。

【讨论】:

  • 很遗憾,没有,我可以创建一个全新的集合并索引任何数据,但问题仍然存在。
【解决方案3】:

在过去几个月里,我在 SOLR 上花费了这么多时间,最终我明白了这一点。

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

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

这本质上是用户错误和对一个主要功能的误解。

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

如果您想查看最近的更改是否生效。查看 Zookeeper 配置文件夹中的 managed-schema 文件。

感谢大家的帮助。

【讨论】:

  • 您能否具体说明“利用架构 API”“重新加载”架构意味着什么?谢谢!
  • 其实我是从这里自己想出来的cwiki.apache.org/confluence/display/solr/… 只是基本上需要使用“addFields”REST API 端点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-16
  • 1970-01-01
  • 1970-01-01
  • 2017-10-25
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
相关资源
最近更新 更多