我使用独立的zookeeper设置了SolrCloud复制。但现在我希望对我的Schema.xml进行一些更改并重新加载核心。问题是当我运行单个服务器Solr(没有solrcloud)时,加载了新模式,但我不知道如何在所有复制服务器上重新加载模式。我尝试在其中一个服务器上重新加载架构,没有任何预期的影响。有没有一种方法可以在使用zookeeper的分布式复制设置中在Solr中重新加载我的schema.xml。
答案 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进行日志记录。
运行“org.apache.solr.cloud.ZkCLI”的类路径。类。
确保UNIX和Windows具有不同的:( Unix seperator);(Windows Separator)
如果您不使用正确的类路径,则会收到如下错误:
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