我目前正在使用批量请求将实体从DBMS迁移到Elasticsearch,但是我希望能够确定操作期间哪些特定实体失败了(无需在操作后查询Elastic)。
我注意到BulkItemResponse.Failure
类有一个ID_FIELD
,但这似乎是操作,而不是文档。
响应中是否有任何字段可用于检索失败文档的字段?
答案 0 :(得分:0)
阅读了Elasticsearch论坛之后,似乎只能在批量请求中检索文档的索引,而不能检索文档的内容 https://discuss.elastic.co/t/way-to-re-index-failed-documents-using-bulkprocessor/33736/3
为了记录,这是我从批量响应中提取失败项目ID的方式:
List<Integer> processBulkResponse(BulkResponse bulkResponse) {
List<Integer> failures = new ArrayList<>();
for (BulkItemResponse bulkItemResponse : bulkResponse) {
if (bulkItemResponse.isFailed()) {
failures.add(bulkItemResponse.getItemId());
}
}
return failures;
}