Перезагрузка конфигурации 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