Почему не удается выполнить массовую операцию эластичного поиска для большого объема данных - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь отправить около 30 МБ данных массовым методом, он ломается. Эта ошибка мало что говорит, но когда размер данных меньше, чем работает, я подозреваю, что это только из-за размера?Я не смог найти такое ограничение через документ API 6.4. Не знаете, почему это нарушение? Можно установить ограничение

Elasticsearch ERROR: 2019-01-14T15:32:36Z
  Error: Request error, retrying
  POST http://xx.xx.xx.xx:yyyy/_bulk => read ECONNRESET
      at Log.error (D:\UBX\UBX_WS\NodeAngular\myapp\node_modules\elasticsearch\src\lib\log.js:226:56)
      at checkRespForFailure (D:\UBX\UBX_WS\NodeAngular\myapp\node_modules\elasticsearch\src\lib\transport.js:259:18)
      at HttpConnector.<anonymous> (D:\UBX\UBX_WS\NodeAngular\myapp\node_modules\elasticsearch\src\lib\connectors\http.js:163:7)
      at ClientRequest.wrapper (D:\UBX\UBX_WS\NodeAngular\myapp\node_modules\lodash\lodash.js:4935:19)
      at emitOne (events.js:116:13)
      at ClientRequest.emit (events.js:211:7)
      at ClientRequest.wrapped (D:\UBX\UBX_WS\NodeAngular\myapp\node_modules\newrelic\lib\transaction\tracer\index.js:181:22)
      at ClientRequest.wrappedRequestEmit (D:\UBX\UBX_WS\NodeAngular\myapp\node_modules\newrelic\lib\instrumentation\core\http-outbound.js:138:26)
      at Socket.socketErrorListener (_http_client.js:387:9)
      at emitOne (events.js:116:13)

Создание клиента

this.client = new elasticsearch.Client({
                log: 'info',
                hosts: 'xxxxx',
                apiVersion: '6.4',
                keepAlive: true,
                suggestCompression: true,
                requestTimeout: 1000 * 60 * 60,
                createNodeAgent: (httpConnector, config) => {
                    let Agent = httpConnector.hand.Agent;
                    let agentConfig = httpConnector.makeAgentConfig(config);
                    agentConfig.keepAliveTimeout = 1000 * 60 * 60;
                    return new Agent(agentConfig);
                }
});


**Sending bulk data** 


ESClient.bulk({ body },
                    function (err, resp) {
                        if (err) {
                            log.error('bulkUpdateOrDelete failed with error - ', JSON.stringify(err));
                            reject(err);
                        } else {
                            log.debug('************* bulkUpdateOrDelete success with response - ', JSON.stringify(resp));
                            log.debug(JSON.stringify(resp));
                            resolve(resp);
                        }
                    });

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Вы используете Elasticsearch на сервере в облаке? Обычно существуют ограничения на полезную нагрузку HTTP в зависимости от размера сервера, поэтому я предполагаю, что ваш экземпляр поддерживает только полезную нагрузку HTTP <30 МБ. Я столкнулся с аналогичной проблемой в меньшем экземпляре в AWS. Переход на более крупный экземпляр решил проблему. </p>

0 голосов
/ 15 января 2019

Я думаю, это связано с настройками HTTP, ограничивающими размер запроса.

Этот параметр http.max_content_length по умолчанию равен 100 МБ, поэтому вы должны попытаться увеличить его в asticsearch.yml

Ссылка на документацию - https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-http.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...