Как обнаружить сбои в ответ на массовые операции? - PullRequest
0 голосов
/ 20 сентября 2019

Я использую библиотеку elasticsearch npm.

Я использую массовый API для индексации документов:

const response = await this.elasticSearchClient.bulk({
     body: bulkRows,
});

Это работает.

Но если ElasticSearch быличто-то не так с некоторыми индексами, как я могу обнаружить эти сбои из ответа?

Я нашел пример ответа в документации (https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html), но я все еще не понимаю, как обнаружитьнеудачи:

1 Ответ

1 голос
/ 20 сентября 2019

Вы можете сделать это, проверив ответ, полученный при массовом вызове:

  const { body: bulkResponse } = await this.elasticSearchClient.bulk({ body: bulkRows })

  if (bulkResponse.errors) {
    const erroredDocuments = []

    bulkResponse.items.forEach((action, i) => {
      const operation = Object.keys(action)[0]
      if (action[operation].error) {
        erroredDocuments.push({
          // If the status is 429 it means that you can retry the document,
          // otherwise it's very likely a mapping error, and you should
          // fix the document before to try it again.

          status: action[operation].status,
          error: action[operation].error,
          operation: body[i * 2],
          document: body[i * 2 + 1]
        })
      }
    })

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