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 楼答案
这是不可能的。批量请求实际上是在服务器端而不是客户端执行的。因此,它所能做的就是发回stacktrace,而不是Exception对象