Я использую эластичный поиск 6.4.Мы индексируем около 100 миллионов документов с помощью загрузчика node-js, используя клиент 15.2.0.
Результаты странные, потому что после каждого индекса мы получаем разное количество документов.
Код создает пакет, и после того, как он достигнет определенного размера, он загружается в эластичный поиск с помощью API-интерфейса.Для большей производительности мы отключаем обновление.Если большая часть отклонена, мы ждем 20 секунд и попробуйте снова
Мы также проверили, что response.error имеет значение true / false, предполагая, что response.error = true означает, что сбоев нет.
Здесь код:
if (i % options.batchSize === 0) {
var previous_start = new Date();
//sleep.msleep(options.slowdown);
async.waterfall([
function (callback) {
client.bulk(
{
refresh: "false", //we do refresh only at the end
//requestTimeout: 200000,
body: batch
},
function (err, resp) {
if (err) {
console.log(err.message);
throw err;
} else if (resp.errors) {
console.log('Bulk is rejected... let\'s medidate');
// let's just wait and re-send the bulk request with increased
// timeout to be on the safe side
console.log("Waiting for 20 seconds");
sleep.msleep(20000); // -> this is blocking... time for elasticsearch to do whatever it does
// and be in a better mood to accept this bulk
client.bulk(
{
refresh: "false",
//requestTimeout: 200000,
body: batch
},
function (err, resp) {
if (err) {
console.log(err.message);
throw err;
} else if (resp.errors) {
console.log(resp);
throw resp;
// alternative would be to block again and resend
}
console.log("bulk is finally ingested...");
let theEnd = new Date();
return callback(null, theEnd);
});
} else {
let theEnd = new Date();
return callback(null, theEnd);
}
});
},
function(end, callback) {
let total_time = (end - start) / 1000;
let intermediate_time = (end - previous_start) / 1000;
indexed += options.batchSize;
console.log('Loaded %s records in %d s (%d record/s)', indexed, total_time, options.batchSize / intermediate_time);
return callback(null, total_time);
}
],
function (err, total_time) {
if (err)
console.log(err);
});
batch = [];
i = 0;
}
});
Похоже, у нас есть некоторые ошибки молчания.У кого-нибудь есть такая же проблема?Любое предложение?
Более того, когда я смотрю на вызов http://localhost:9200/_cat/indices?v, я получаю странные результаты в столбце docs.deleted
, что означает этот столбец?
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open index_name Cqc2ABpRRs23P1DKlgaKJQ 5 0 96450728 340 24.8gb 24.8gb
иногда это число изменяется при индексации, например:
green open index_name WsJPPQLcTuuiw37Vv0lfhA 5 0 21958048 6594 6.6gb 6.6gb
(затем это число уменьшается)
Я не мог найти какое-либо объяснение по этому поводу ...любая помощь по этому поводу?
Заранее спасибо