У меня есть solr 5.4.1 таблица, которую я позволяю пользователям делать комментарии. Через PHP, пользователь выполняет следующую функцию:Исключение записи документ id
function solr_update($id, $comments) {
$ch = curl_init("http://url:8983/solr/asdf/update?commit=true");
$data = array(
"id" => $id,
"comments" => array(
"set" => $comments),
);
$data_string = json_encode(array($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
echo curl_exec($ch);
}
Хотя большую часть времени это работает, и я получаю такой ответ:
{"responseHeader":{"status":0,"QTime":83}}
недавно я был запущен в то время, когда это является ответом Я получаю от curl_exec($ch)
.
{"responseHeader":{"status":400,"QTime":6},
"error":{"msg":"Exception writing document id 376299
to the index; possible analysis error.","code":400}}
Я не уверен, что причиной этого, но когда это произойдет, это как умирает вся таблица, и я должен использовать restorepoint, чтобы получить его обратно(http://url:8983/solr/asdf/replication?command=restore&name=solr_backup_20161028)
.
Если я попытаюсь загрузить ядро в solr (http://url:8983/solr/asdf
), никаких записей не появится, и в нем говорится: «Luke не настроен». Хотя я все еще могу выполнить запрос: (http://url:8983/solr/asdf/select?q=*:*
), я не вижу счетчик записей или вообще не изменяю базу данных.
Я делаю что-то неправильно, из-за чего мой стол становится поврежденным?
Редактировать
Bounty time. Мне действительно нужна помощь в решении этого!
Edit2 - Журналы сервера
D: \ Solr \ Solr-5.4.1 \ сервер \ Logs \ solr.log.2
2016-11-15 13:59:49.997 ERROR (qtp434176574-19) [ x:invoice]
o.a.s.s.HttpSolrCall null:org.apache.lucene.index.IndexNotFoundException:
no segments* file found in
NRTCachingDirectory([email protected]:\solr\solr-
5.4.1\server\solr\asdf\data\restore.snapshot.solr_backup_20161104
[email protected];
maxCacheMB=48.0 maxMergeSizeMB=4.0): files: [_pej4.fdt,
_pej4_Lucene50_0.doc, _pej4_Lucene50_0.tim, _wxvy.fdt,
_wxvy_Lucene50_0.doc, _wxvy_Lucene50_0.tim]
Кроме того, теперь у меня есть несколько "solr_backupYYYYMM" в папке asdf/data
. Могу ли я вручную удалить их, не вызывая проблем? Единственная вещь, которая, я считаю, работает против solr после 5pm, это скрипт python, который я написал для резервного копирования solr каждую ночь, и как часть скрипта, он в настоящее время удаляет любую папку с строкой YYYYMM
, которая старше 7 дней (поэтому у меня не хватает места). Я взял эту часть из сценария по состоянию на вчера, в случае, если это может быть причиной этой проблемы. Я просто пытаюсь думать обо всем.
В основном угадывание здесь, но примерно эквивалентное «недопустимому SQL» с SQL-сервера? GIGO, проверьте все представленные данные? Что-то нулевое, требуемый атрибут отсутствует? Плохая цитата? (это звучит слишком сложно, SQL: P) –
Кстати, «num docs» плюс «удаленные документы» равно «max docs» в вашем отчете. –
Есть ли что-то конкретное в отношении «комментариев» к тем, которые сбой (например, NULL, строка против массива и т. Д.) Или они содержат символ, который не отображается в других (например, запятая или символ более высокого порядка, такие как é или multi -byte символов?) – Robbie