18

我已经使用独立的 zookeeper 设置了 SolrCloud 复制。但现在我希望对我的 Schema.xml 进行一些更改并重新加载核心。问题是,当我运行单个服务器 Solr(没有 solrcloud)时,会加载新模式,但我不知道如何在所有复制服务器上重新加载模式。我尝试在其中一台服务器上重新加载架构,但没有任何预期的影响。有没有一种方法可以在使用 Zookeeper 的分布式复制设置中重新加载 Solr 中的 schema.xml。

4

4 回答 4

27

刚刚找到了我们需要将更改后的配置推送到 zookeeper ensemble 的解决方案。

只需使用

sh zkcli.sh -cmd upconfig -zkhost  127.0.0.1:2181  -collection collection1 -confname myconf -solrhome ../solr -confdir ../solr/collection1/conf

zkcli.sh 位于 example/cloud-scripts 下

于 2013-04-05T13:03:35.947 回答
8

标记为正确的答案是错误的。你必须使用Solr Collection API

使用 Solrzkcli.sh实用程序上传新的集合(索引)配置后,配置将不会自动重新加载。

Solr Collection API 用于 SolrCloud,配置重新加载将分布在整个集群中。据我所知,Solr Collection API 至少从 Solr 4.8 开始可用。

该过程略有不同,使用这些 API,您只需一次 API 调用即可在整个集群上重新加载配置。

只需使用 Solrzkcli.sh实用程序上传您的更新配置。请注意不要将 Solrzkcli.sh与 Zookeeper混淆,zkCli.sh它们的名称完全相同,但用途完全不同。

所以正如所说的使用 Solr zkcli.sh(在撰写本文时在目录中server/scripts/cloud-scripts):

./zkcli.sh -cmd upconfig -zkhost 127.0.0.1:2181 -collection collection1 -confname myconf -confdir path/to/solr/collection1/conf

然后你可以重新加载配置collection1

http://server1:8983/solr/admin/collections?action=RELOAD&name=collection1

整个集群将被更新。

于 2017-04-11T16:22:11.910 回答
2

这对我有用:

    bin/solr zk -upconfig -n collectionName -d pathto/Conf_directory -z localhost:2181/solr
于 2017-11-13T14:24:57.170 回答
1

下面是 Windows 的命令,

它在 Unix 中几乎相同,我们只需要更改 Solr lib 的路径和类路径分隔符,; & :因为它的 java 命令也应该在 Unix 中运行。

java  -Dlog4j.configuration="file:E:/solr-5.5.1/server/scripts/cloud-scripts/log4j.properties" -classpath .;E:/solr-5.5.1/server/solr-webapp/webapp/WEB-INF/lib/*;E:/solr-5.5.1/server/lib/ext/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 192.168.42.13:2787 -confdir E:/New_Solor_Conf -confname Solor_conf

关于命令的简要细节如下:

用于日志记录的 log4j 配置。

  • -Dlog4j.configuration="文件:E:/solr-5.5.1/server/scripts/cloud-scripts/log4j.properties

运行“org.apache.solr.cloud.ZkCLI”的类路径。班级。

确保 UNIX 和 Windows 有不同的 : (Unix 分隔符) ;(Windows 分隔符)

  • -classpath .;E:/solr-5.5.1/server/solr-webapp/webapp/WEB-INF/lib/ ;E:/solr-5.5.1/server/lib/ext/
  • -zkhost 192.168.42.13:2787(Solr Zookeeper 运行的远程主机和端口
  • -confdir E:/New_Solor_Conf (我们需要上传的本地目录。)
  • -confname Solor_conf 远程实例名称。

如果您不使用正确的类路径,您将收到如下错误:

  Error: Could not find or load main class org.apache.solr.cloud.ZkCLI

或者

 Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFacto
    ry
            at org.apache.solr.common.cloud.SolrZkClient.<clinit>(SolrZkClient.java:
    71)
            at org.apache.solr.cloud.ZkCLI.main(ZkCLI.java:183)
    Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
            at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

我能够上传我的本地配置更改,而无需实际登录到远程 Solr 框。希望它也适用于其他人。

于 2016-05-22T11:28:24.123 回答