Перезагрузка конфигурации SolrCloud (хранится в Zookeeper) - schema.xml

Я установил репликацию SolrCloud, используя автономный zookeeper. Но теперь я хочу внести некоторые изменения в свой Schema.xml и перезагрузить ядро. Проблема в том, что когда я запускаю один сервер Solr (no solrcloud), загружается новая схема, но я не знаю, как перезагрузить схему на всем сервере репликации. Я попытался перезагрузить схему на одном из серверов без какого-либо эффекта. Есть ли способ, в котором я могу перезагрузить мой schema.xml в Solr в распределенной настройке репликации, которая использует zookeeper.

Ответы

Ответ 1

Только что нашел решение, которое нам нужно, чтобы изменить измененную конфигурацию на ансамбль zookeeper.

Просто используйте

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

zkcli.sh присутствует в примере/cloud-scripts

Ответ 2

Ответ, помеченный как правильный, неверен. Вы должны использовать Solr Collection API

После загрузки новой конфигурации коллекции (индекса) с помощью утилиты Solr zkcli.sh конфигурация не будет автоматически перезагружена.

Solr Collection API указан для SolrCloud, и перезагрузка конфигурации будет распространена на весь кластер. Насколько я знаю, 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

Затем вы можете перезагрузить конфигурацию collection1 с помощью:

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

Весь кластер будет обновлен.

Ответ 3

Ниже приведена команда для Windows,

IT будет почти таким же, как в 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 seperator); (Сепаратор 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. Надеюсь, это сработает и для других.

Ответ 4

Это сработало для меня:

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