Ho installato una replica SolrCloud utilizzando lo zookeeper autonomo. Ma ora desidero apportare alcune modifiche al mio Schema.xml e ricaricare il core. Il problema è che quando eseguo un singolo server Solr (nessun solrcloud) viene caricato il nuovo schema, ma non so come ricaricare lo schema su tutto il server di replica. Ho provato a ricaricare lo schema su uno dei server senza alcun impatto desiderato. C'è un modo in cui posso ricaricare il mio schema.xml in Solr in configurazione di replica distribuita che utilizza zookeeper.Ricaricamento di Zookeeper solr conf (schema.xml)
risposta
Abbiamo appena trovato la soluzione di cui abbiamo bisogno per inviare la configurazione modificata a zookeeper ensemble.
Basta usare
sh zkcli.sh -cmd upconfig -zkhost 127.0.0.1:2181 -collection collection1 -confname myconf -solrhome ../solr -confdir ../solr/collection1/conf
zkcli.sh è presente sotto esempio/cloud-scripts
Di seguito è riportato il comando per Windows,
sarà quasi uguale in Unix abbiamo solo bisogno di cambia il percorso di Solr lib e class-path separator ; & :
Perché il suo comando java dovrebbe essere eseguito anche in 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
Brevi dettagli sul comando come segue:
configurazione di log4j per la registrazione.
- -Dlog4j.configuration = "file: E: /solr-5.5.1/server/scripts/cloud-scripts/log4j.properties percorso
Class con" org.apache .. .solr.cloud.ZkCLI" classe
assicurarsi UNIX e Windows avranno diversa: (separatore Unix); (Windows Separator)
- -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 e la porta dove Solr Zookeeper è in esecuzione)
- -confdir e: (. directory locale quello che abbiamo bisogno di caricare)/New_Solor_Conf
- -confname Solor_conf nome istanza remota.
Se non utilizzerà corretto percorso di classe si otterrà errore come:
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)
Sono in grado di caricare le mie modifiche di configurazione locali senza accedere fisicamente alla casella Solr remota. Spero che funzionerà anche per gli altri.
La risposta contrassegnata come corretta è errata. È necessario utilizzare Solr Collection API
Le API di raccolta Solr sono indicate per SolrCloud e la ricarica della configurazione verrà distribuita nell'intero cluster. Per quanto ne so, l'API Solr Collection è disponibile almeno da Solr 4.8.
La procedura è leggermente diversa e con queste API è possibile ricaricare la configurazione sull'intero cluster con una sola chiamata API.
Basta caricare la configurazione aggiornata con l'utilità Solr zkcli.sh
. Prestare attenzione a non confondere Solr zkcli.sh
con Zookeeper zkCli.sh
hanno lo stesso nome ma scopo completamente diverso. Quindi, come detto uso Solr zkcli.sh
:
./zkcli.sh -cmd upconfig -zkhost 127.0.0.1:2181 -collection collection1 -confname myconf -confdir path/to/solr/collection1/conf
Poi è possibile ricaricare la configurazione con:
http://server1:8983/solr/admin/collections?action=RELOAD&name=collection1
L'intero cluster verrà aggiornato.
E qual è la differenza rispetto alla risposta accettata da Global Warrior? –
@JackMiller La domanda è correlata a SolrCloud (probabilmente un cluster).Dato che il termine 'core' è usato per riferirsi a un singolo indice su un'istanza Solr e, d'altra parte, un' collection' è un indice logico completo in un cluster SolrCloud. Usando [Solr Collection API] (https://cwiki.apache.org/confluence/display/solr/Collections+API) la ricarica della configurazione verrà diffusa attraverso l'intero cluster e non solo nell'istanza corrente. Pertanto, utilizza sempre l'API di raccolta, indipendentemente dall'ampiezza dell'architettura Solr (ad esempio con più frammenti e/o repliche). – freedev
Ok, finalmente lo trovo: Deve essere * collections * nell'URL invece di * core *. Sì, questa è una differenza importante ma potresti chiarire meglio dove è la differenza effettiva nella tua risposta. La prima parte * zkcli ... upconfig * è completamente identica. –
Questo ha funzionato per me:
bin/solr zk -upconfig -n collectionName -d pathto/Conf_directory -z localhost:2181/solr
Con isolr zk upconfig' ricaricare i core sembra non essere necessario. Non riesco a trovare alcuna documentazione su di esso però. –
Hai '-confdir ../ solr/collection1/conf' due volte. – zengr
@zengr: risolto :) –
È tutto? Non è necessario ricaricare i nodi o la raccolta? Non appena viene caricato, è in uso attraverso la raccolta? – johnnyboy