有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java捕获来自BulkRequest的特定Elasticsearch异常

我使用Java将一些带有BulkRequest的文档索引到Elasticsearch 1.4.2中

其中一些文档只需要在它们不在索引中时写入,因此我将CREATE opType设置为:

indexRequestBuilder.opType(IndexRequest.OpType.CREATE)

现在,已经在索引中的文档在响应中失败

错误消息bulkItemResponse.getFailureMessage()

DocumentAlreadyExistsException[...]

我想忽略这类异常,但尝试为所有其他类型的异常编写文档

那么我怎样才能只抓住DocumentAlreadyExistsException

我可以用bulkItemResponse.getFailure()获取Failure,但是在错误消息旁边找不到任何关于异常类型的信息

我可以在错误消息中查找异常名称,但对于新的Elasticsearch版本,这可能相当脆弱:

if(bulkItemResponse.getFailureMessage().startsWith("DocumentAlreadyExistsException[")

有更好的办法吗


共 (1) 个答案

  1. # 1 楼答案

    这是不可能的。批量请求实际上是在服务器端而不是客户端执行的。因此,它所能做的就是发回stacktrace,而不是Exception对象