スタンドアロンのzookeeperを使用してSolrCloudレプリケーションをセットアップしました。しかし今、Schema.xmlにいくつかの変更を加えて、コアをリロードしたいと思います。問題は、単一サーバーSolr(solrcloudなし)を実行すると、新しいスキーマがロードされますが、すべてのレプリケーションサーバーでスキーマをリロードする方法がわからないことです。サーバーの1つにスキーマを再ロードしてみましたが、影響はありませんでした。 zookeeperを使用する分散レプリケーションセットアップでSolrにschema.xmlをリロードする方法はありますか?.
変更した構成を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の下にあります
正解としてマークされた答えは間違っています。使用する必要があります Solr Collection API
Solr zkcli.sh
ユーティリティを使用して新しいコレクション(インデックス)構成をアップロードすると、構成は自動的に再ロードされません。
Solr Collection APIはSolrCloud用に示され、構成のリロードはクラスター全体に分散されます。私の知る限り、Solr CollectionAPIは少なくともSolr4.8から入手できます。
手順は少し異なり、これらのAPIを使用すると、1回のAPI呼び出しのみでクラスター全体の構成を再読み込みできます。
Solr zkcli.sh
ユーティリティを使用して更新された構成をアップロードするだけです。 Solr zkcli.sh
とZookeeperzkCli.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
クラスター全体が更新されます。
以下はWindows用のコマンドです。
Unixでもほぼ同じです。Solrlibのパスとクラスパス区切り文字を変更するだけです; & :
その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セパレーター);(Windowsセパレーター)
正しいクラスパスを使用しない場合、次のようなエラーが発生します:
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ボックスに物理的にログインしなくても、ローカル構成の変更をアップロードできます。それが他の人にもうまくいくことを願っています。
これは私のために働いた:
bin/solr zk -upconfig -n collectionName -d pathto/Conf_directory -z localhost:2181/solr