Recargando la configuración de SolrCloud(almacenada en Zookeeper)-schema.xml
apache-zookeeper solr4 (4)
He configurado una replicación de SolrCloud usando un guardián del zoológico independiente. Pero ahora deseo realizar algunos cambios en mi Schema.xml y volver a cargar el núcleo. El problema es que cuando ejecuto un solo servidor Solr (no solrcloud), se carga el nuevo esquema, pero no sé cómo volver a cargar el esquema en todo el servidor de replicación. Intenté volver a cargar el esquema en uno de los servidores sin el impacto deseado. ¿Hay alguna forma en la que pueda volver a cargar mi schema.xml en Solr en la configuración de replicación distribuida que usa el guardián del zookeeper?
A continuación se muestra el Comando para Windows,
Será casi igual en Unix, solo necesitamos cambiar la ruta de Solr lib y el separador de clase ; & :
; & :
Porque su comando java también debería ejecutarse en 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
Breves detalles sobre el comando de la siguiente manera:
Configuración de log4j para el registro.
- -Dlog4j.configuration = "archivo: E: /solr-5.5.1/server/scripts/cloud-scripts/log4j.properties
Ruta de clase para ejecutar "org.apache.solr.cloud.ZkCLI". clase.
asegúrese de que UNIX y Windows tengan diferente: (separador Unix); (Separador de 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 ( host remoto y puerto donde se ejecuta Solr Zookeeper )
- -confirir E: / New_Solor_Conf (directorio local lo que necesitamos cargar).
- -confname Solor_conf Nombre de instancia remota.
Si no utilizas la ruta de clase correcta, obtendrás un error como:
Error: Could not find or load main class org.apache.solr.cloud.ZkCLI
o
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)
Puedo cargar mis cambios de configuración local sin iniciar sesión físicamente en el cuadro de Solr remoto. Espero que funcione para otros también.
Acabo de encontrar la solución que necesitamos para enviar la configuración modificada al conjunto zookeeper.
Solo usa
sh zkcli.sh -cmd upconfig -zkhost 127.0.0.1:2181 -collection collection1 -confname myconf -solrhome ../solr -confdir ../solr/collection1/conf
zkcli.sh está presente en ejemplo / cloud-scripts
Esto funcionó para mí:
bin/solr zk -upconfig -n collectionName -d pathto/Conf_directory -z localhost:2181/solr
La respuesta marcada como correcta es incorrecta. Tienes que usar la API de colección Solr
Las API de colección de Solr están indicadas para SolrCloud y la recarga de la configuración se distribuirá en todo el clúster. Por lo que sé, la API de la colección Solr está disponible al menos desde Solr 4.8.
El procedimiento es ligeramente diferente y con estas API puede volver a cargar la configuración en todo el Clúster con solo una llamada a la API .
Simplemente cargue su configuración actualizada con la utilidad Solr zkcli.sh
. Preste atención a no confundir Solr zkcli.sh
con Zookeeper zkCli.sh
, tienen el mismo nombre pero un propósito completamente diferente.
Entonces, como se dice, use Solr zkcli.sh
(está en el directorio server/scripts/cloud-scripts
):
./zkcli.sh -cmd upconfig -zkhost 127.0.0.1:2181 -collection collection1 -confname myconf -confdir path/to/solr/collection1/conf
Luego puedes recargar la configuración con:
http://server1:8983/solr/admin/collections?action=RELOAD&name=collection1
Se actualizará todo el cluster.