web-dev-qa-db-ja.com

SolrCloud構成の再読み込み(Zookeeperに保存)-schema.xml

スタンドアロンのzookeeperを使用してSolrCloudレプリケーションをセットアップしました。しかし今、Schema.xmlにいくつかの変更を加えて、コアをリロードしたいと思います。問題は、単一サーバーSolr(solrcloudなし)を実行すると、新しいスキーマがロードされますが、すべてのレプリケーションサーバーでスキーマをリロードする方法がわからないことです。サーバーの1つにスキーマを再ロードしてみましたが、影響はありませんでした。 zookeeperを使用する分散レプリケーションセットアップでSolrにschema.xmlをリロードする方法はありますか?.

18
Global Warrior

変更した構成を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の下にあります

26
Global Warrior

正解としてマークされた答えは間違っています。使用する必要があります 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

クラスター全体が更新されます。

7
freedev

以下は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の構成。

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

「org.Apache.solr.cloud.ZkCLI」を実行するためのクラスパス。クラス。

uNIXとWindowsが異なることを確認してください:(Unixセパレーター);(Windowsセパレーター)

  • -クラスパス。; 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ボックスに物理的にログインしなくても、ローカル構成の変更をアップロードできます。それが他の人にもうまくいくことを願っています。

2
Laxman G

これは私のために働いた:

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