Подтвердить что ты не робот

Сопротивление результата Solr

У меня есть четыре узла solrcloud setup версии 4.10, и моя коллекция имеет 4 осколка, 2 реплики. Мое приложение обеспечивает возможность поиска при проглатывании данных в реальном времени, параллельно выполняются процессы проглатывания и поиска данных.

Каждый день загрузка данных составляет около 2 ~ 3MM записей (операции ввода/обновления), а общее количество документов составляет 80MM +.

Проблема, с которой мы сталкиваемся, заключается в том, что solr возвращает очень несогласованные записи во время пикового времени приема данных.

Пример запроса:

for i in `seq 1 50`;
do
       curl 'http://localhost:8888/solr/OPTUM/select?q=*:*&wt=json&indent=true'|grep numFound|rev|cut -d'{' -f1 |rev
done

В ответе numfound отображается когда-то очень меньшее количество документов, которые фактически присутствуют в solr.

Пожалуйста, предложите, чтобы мне нужно было изменить конфигурацию, чтобы получить согласованное количество.

4b9b3361

Ответ 1

Я еще не нашел основную причину этой проблемы, но на некоторое время я сделал работу, чтобы устранить эту ошибку.
Я использовал метод softcommit solrj4.x(UpdateRequest.setCommitWithin( commitWithinMs )), который я прокомментировал и использовал всю стратегию фиксации на стороне solr.

    <autoCommit>
            <maxTime>15000</maxTime>
            <openSearcher>false</openSearcher>
        </autoCommit>
<autoSoftCommit>
            <maxTime>2000</maxTime>
        </autoSoftCommit>

Я получаю согласованный результат от solr, но все же я не уверен, почему команда клиента solrj не работает.

Ответ 2

Кажется, проблема связана с тем, как вы запрашиваете свою распределенную настройку, - вы сказали: "Моя коллекция имеет 4 осколка, 2 реплики" по 4 узлам... ваши непоследовательные результаты могут быть вызваны тем, что вы перенаправлены на осколок, основанный на алгоритм балансировки нагрузки - поэтому каждый раз используется один осколок и возвращает вам другой набор результатов (подмножество).

Прочитайте Документацию по распределенным запросам здесь.

Попробуйте добавить что-то вроде:

http://localhost:8983/solr/gettingstarted/select?q=*:*&shards=nodehost1:7574/solr,nodehost2:8983/solr,nodehost3:8983/solr,nodehost4:8983/solr