重新加载SolrCloud配置(存储在Zookeeper上) - schema.xml

时间:2013-04-05 09:16:47

标签: solr apache-zookeeper solr4 solrcloud

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

4 个答案:

答案 0 :(得分:26)

刚刚找到了将更改后的配置推送到zookeeper集合所需的解决方案。

只需使用

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

答案 1 :(得分:6)

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

为SolrCloud指示Solr Collection API,配置重新加载将在整个群集中传播。据我所知,Solr Collection API至少可以从Solr 4.8获得。

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

只需使用Solr zkcli.sh实用程序上传更新的配置即可。注意不要将Solr zkcli.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

然后您可以使用以下命令重新加载配置:

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

整个群集将会更新。

答案 2 :(得分:2)

以下是Windows命令,

在Unix中,IT几乎是一样的,我们只需要改变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 =“file:E:/solr-5.5.1/server/scripts/cloud-scripts/log4j.properties

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

确保UNIX和Windows具有不同的:( Unix seperator);(Windows Separator)

  • -classpath。; E:/solr-5.5.1/server/solr-webapp/webapp/WEB-INF/lib/ ; E:/solr-5.5.1/server/lib/ext/ < / em>的
  • -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框。希望它也适用于其他人。

答案 3 :(得分:1)

这对我有用:

    bin/solr zk -upconfig -n collectionName -d pathto/Conf_directory -z localhost:2181/solr