Как исправить ошибку «Ошибка: [remote_transport_exception]» в API эластичного поиска? - PullRequest
0 голосов
/ 24 апреля 2019

Я пишу скрипт nodejs для записи данных из коллекции MongoDB в индекс поиска Elastic. В mongodb 270 документов, которые мне нужно передать в ES, но проблема в том, что каждый раз, когда я запускаю скрипт, несколько случайных документов выдают ошибку, которую я не могу понять, почему.

Я использую MacOS, и ES, и mongoDB размещаются локально. MongoDB находится на порте 27017 и ES на 9200.

const url = 'mongodb://localhost:27017/';
const esClient = new elasticsearch.Client({
    host: 'localhost:9200',
    log: 'error'
});

MongoClient.connect(url, {useNewUrlParser: true},  function(err, db){
    if(err) throw err;
    var dbo = db.db('rxclinic_test');
    var collection = dbo.collection('sessions');
    collection.find().toArray(function(err, result){
        if(err) throw err;
        bulkIndex('temp', '_doc', result);
        db.close();
    });
})

function bulkIndex(index, type, data){
    data.forEach(item => {
        esClient.index({
            index: index,
            type: "_doc",
            body: {
                sessions: item.sessions
            }
        }).then(response => console.log(`item indexed`))
        .catch(e => {
            console.log(`an error occurred`);
            throw e;
        });
    });
}

Это сгенерированная ошибка:

произошла ошибка (узел: 14016) UnhandledPromiseRejectionWarning: Ошибка: [remote_transport_exception] [Bhavays-MacBook-Air.local] [127.0.0.1:9300] [индексы: данные / запись / объем [s] [p]] при ответе (/Users/bhavayanand/Desktop/rxlabs/es/node_modules/elasticsearch/src/lib/transport.js:308:15) в checkRespForFailure (/Users/bhavayanand/Desktop/rxlabs/es/node_modules/elasticsearch/src/lib/transport.js:267:7) на HttpConnector. (/Users/bhavayanand/Desktop/rxlabs/es/node_modules/elasticsearch/src/lib/connectors/http.js:166:7) на IncomingMessage.wrapper (/Users/bhavayanand/Desktop/rxlabs/es/node_modules/lodash/lodash.js:4935:19) на IncomingMessage.emit (events.js: 187: 15) в endReadableNT (_stream_readable.js: 1094: 12) at process.internalTickCallback (internal / process / next_tick.js: 72: 19) (узел: 14016) UnhandledPromiseRejectionWarning: необработанное отклонение обещания. Эта ошибка возникла либо из-за того, что внутри асинхронной функции возникла ошибка без блока catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch (). (код отклонения: 5)

...