J'ai configuré une réplication SolrCloud à l'aide d'un zookeeper autonome. Mais maintenant, je souhaite apporter quelques modifications à mon fichier Schema.xml et recharger le noyau. Le problème est que lorsque je lance un seul serveur Solr (no solrcloud), le nouveau schéma est chargé, mais je ne sais pas comment recharger le schéma sur tout le serveur de réplication. J'ai essayé de recharger le schéma sur l'un des serveurs sans impact souhaité. Existe-t-il un moyen de recharger mon fichier schema.xml dans Solr dans l’installation de réplication distribuée qui utilise zookeeper.
Vient de trouver la solution dont nous avons besoin pour pousser la configuration modifiée vers un ensemble de gardien de zoo.
Juste utiliser
sh zkcli.sh -cmd upconfig -zkhost 127.0.0.1:2181 -collection collection1 -confname myconf -solrhome ../solr -confdir ../solr/collection1/conf
zkcli.sh est présent sous example/cloud-scripts
La réponse marquée comme correcte est fausse. Vous devez utiliser API Solr Collection
Les API Solr Collection sont indiquées pour SolrCloud et le rechargement de la configuration sera réparti dans l’ensemble du cluster. Pour autant que je sache, les API de Solr Collection sont disponibles au moins à partir de Solr 4.8.
La procédure est légèrement différente et avec ces API, vous pouvez recharger la configuration sur l'ensemble du cluster avec un seul appel d'API .
Téléchargez simplement votre configuration mise à jour avec l'utilitaire Solr zkcli.sh
. Faites attention à ne pas confondre Solr zkcli.sh
avec Zookeeper zkCli.sh
, ils ont tout à fait le même nom mais un but complètement différent.
Donc, comme dit utiliser Solr zkcli.sh
(est dans le répertoire server/scripts/cloud-scripts
):
./zkcli.sh -cmd upconfig -zkhost 127.0.0.1:2181 -collection collection1 -confname myconf -confdir path/to/solr/collection1/conf
Ensuite, vous pouvez recharger la configuration avec:
http://server1:8983/solr/admin/collections?action=RELOAD&name=collection1
L'ensemble du cluster sera mis à jour.
Ci-dessous la commande pour Windows,
Le système informatique sera presque le même sous Unix, nous devons simplement changer le chemin de Solr lib et le séparateur de chemin de classe ; & :
Parce que sa commande Java doit s’exécuter également sous 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
Bref détails sur la commande comme suit:
Configuration de log4j pour la journalisation.
Chemin de classe à exécuter "org.Apache.solr.cloud.ZkCLI". classe.
assurez-vous qu'UNIX et Windows auront des noms différents: (séparateur Unix); (séparateur Windows)
Si vous n'utilisez pas le chemin de classe correct, vous obtiendrez une erreur du type:
Error: Could not find or load main class org.Apache.solr.cloud.ZkCLI
ou
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)
Je peux télécharger mes modifications de configuration locales sans me connecter physiquement à la boîte de dialogue Solr distante. J'espère que cela fonctionnera pour les autres également.
Cela a fonctionné pour moi:
bin/solr zk -upconfig -n collectionName -d pathto/Conf_directory -z localhost:2181/solr