J'ai un index lucene que je construis et mets à jour en utilisant des indexeurs lucene bruts. Je me demandais s'il y avait un moyen de forcer solr à relire l'index sans redémarrer l'instance solr. J'ai essayé la mise à jour? Commit = true mais cela ne semble pas avoir d'importance. La seule façon dont je peux être sûr que l'index est lu par un redémarrage total, ce qui n'est bien sûr pas idéal dans un environnement de production.Force Solr à lire à partir d'un index mis à jour
1
A
Répondre
1
Si vous utilisez une configuration multicœur, vous pouvez simplement reload ce simple noyau. AFAIK, tandis que le noyau est en cours de rechargement, les demandes à ce noyau sont mises en file d'attente.
0
Vous ne savez pas s'il existe un autre moyen de le faire. Mais j'ai écrit ce script pour effectuer des importations complètes ou delta.
#!/bin/bash
# script to index Solr
# by Felipe Ferreira Sept 2013
TYPE=$1
DATE=`date +%d_%m_%y`
DATEFULL=`date +%H:%M:%S_%d_%m_%y`
LOG="/var/log/solr/solr_import_${TYPE}_${DATE}.log"
LOGTMP="/var/log/solr/solr_status_${DATE}.log"
URL="http://<SERVER>:8080/solr/dataimport?command=status"
pt() {
echo -e $1
echo -e $1 >> $LOG
}
if [ $TYPE == "full" ]; then
pt "$DATEFULL - Starting full import"
URL="http://<SERVER>:8080/solr/dataimport?command=full-import"
# CMD="curl --location --no-buffer --fail --silent --output ${LOG} '${URL}'"
CMD="curl --location --silent --no-buffer '${URL}' >> $LOG"
pt "Executing $CMD"
CMD_E=`eval $CMD`
pt $CMD_E
elif [ $TYPE == "delta" ]; then
pt "$DATEFULL - Starting delta import"
URL="http://<SERVER>:8080/solr/dataimport?command=delta-import"
#CMD="curl --location --no-buffer --fail --silent --output ${LOG} '${URL}'"
CMD="curl --location --silent --no-buffer '${URL}' >> $LOG"
pt "Executing $CMD"
CMD_E=`eval $CMD`
pt $CMD_E
else
pt "ERROR - $TYPE not found, only delta or full,\n Usage: $0 delta/full"
fi
sleep 3
#check status after command
pt "$DATEFULL - Checking $TYPE status"
URL="http://infofish2:9080/solrcadin/cadin/dataimport?command=status"
CMD="curl --location --silent --no-buffer '${URL}' > $LOGTMP"
pt "Executing $CMD"
CMD_E=`eval $CMD`
pt $CMD_E
CHECK=0
CHECK=`grep -c failed $LOGTMP`
if [ $CHECK -eq 0 ]; then
pt "OK - Command $TYPE executed with success!"
exit 0
else
pt "CRITICAL - Command $TYPE failed, solr did not index!"
pt "grep -c failed $LOGTMP"
pt "CHECK $CHECK"
exit 0
fi
et si je ne suis pas ?? – recursive9
Je ne sais pas si vous pouvez envoyer un rechargement lorsque vous n'utilisez pas de cœurs. Mais il n'y a rien de mal à utiliser une configuration multi-core avec un seul noyau. Il n'ajoute pas de frais généraux significatifs. –