Заставить Solr читать из обновленного индекса - PullRequest
1 голос
/ 19 октября 2010

У меня есть индекс lucene, который я строю и обновляю, используя необработанные индексы lucene.Мне было интересно, если есть способ заставить Solr перечитать индекс без перезапуска экземпляра Solr.Я пробовал обновление? Commit = true, но, похоже, это не имеет значения.Единственный способ, которым я могу быть уверен, что solr -re-reads читает индекс, - это полный перезапуск, который, конечно, не идеален в производственной среде.

Ответы [ 2 ]

1 голос
/ 19 октября 2010

Если вы используете установку с несколькими ядрами, вы можете просто перезагрузить это одно ядро. AFAIK, пока ядро ​​перезагружается, запросы к этому ядру ставятся в очередь.

0 голосов
/ 27 июля 2015

Не уверен, есть ли другой лучший способ сделать это.Но я написал этот скрипт для полного или дельта-импорта.

#!/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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...