Как получить поля документа, когда происходит сбой в массовой операции Elasticsearch? - PullRequest
0 голосов
/ 31 января 2019

В настоящее время я перемещаю сущности из СУБД в Elasticsearch с использованием массовых запросов, но я хочу иметь возможность определить, какие конкретные сущности не удалось выполнить во время операции (без необходимости запрашивать Elastic после операции).Я заметил, что класс BulkItemResponse.Failure имеет ID_FIELD, но это, похоже, действие, а не документ.

Есть ли в ответе какое-либо поле, которое я могу использовать для получения полей ошибочных документов

1 Ответ

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

После прочтения форумов Elasticsearch кажется, что возможно получить только индекс документа в массовом запросе, но не содержимое документа https://discuss.elastic.co/t/way-to-re-index-failed-documents-using-bulkprocessor/33736/3

Для записи, вот как яизвлек идентификатор неисправных элементов из массового ответа:

List<Integer> processBulkResponse(BulkResponse bulkResponse) {
    List<Integer> failures = new ArrayList<>();
    for (BulkItemResponse bulkItemResponse : bulkResponse) {
        if (bulkItemResponse.isFailed()) {
            failures.add(bulkItemResponse.getItemId());
        }
    }
    return failures;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...