DeleteRequest
没有参数。segmentfault
DeleteRequest request = new DeleteRequest( "posts", "doc", "1");
posts
— 索引。doc
— 类型。1
— 文档id。能够选择提供如下参数:异步
request.routing("routing");
request.parent("parent");
request.timeout(TimeValue.timeValueMinutes(2)); request.timeout("2m");
TimeValue
的超时。String
的超时。request.setRefreshPolicy(WriteRequest.RefreshPolicy.WAIT_UNTIL); request.setRefreshPolicy("wait_for");
WriteRequest.RefreshPolicy
实例。String
。request.version(2);
request.versionType(VersionType.EXTERNAL);
如下列方式执行DeleteRequest
时,客户端在继续执行代码以前等待返回DeleteResponse
:ide
DeleteResponse deleteResponse = client.delete( request, RequestOptions.DEFAULT);
执行DeleteRequest
也能够以异步方式完成,以便客户端能够直接返回,用户须要经过将请求和侦听器传递给异步删除方法来指定响应或潜在故障的处理方式:post
client.deleteAsync(request, RequestOptions.DEFAULT, listener);
DeleteRequest
和执行完成时要使用的ActionListener
。异步方法不会阻塞并当即返回,完成后,若是执行成功完成,则使用onResponse
方法回调ActionListener
,若是失败则使用onFailure
方法。code
delete
的典型侦听器以下所示:索引
listener = new ActionListener<DeleteResponse>() { @Override public void onResponse(DeleteResponse deleteResponse) { } @Override public void onFailure(Exception e) { } };
onResponse
— 执行成功完成时调用。onFailure
— 在整个DeleteRequest
失败时调用。返回的DeleteResponse
容许检索有关已执行操做的信息,以下所示:路由
String index = deleteResponse.getIndex(); String type = deleteResponse.getType(); String id = deleteResponse.getId(); long version = deleteResponse.getVersion(); ReplicationResponse.ShardInfo shardInfo = deleteResponse.getShardInfo(); if (shardInfo.getTotal() != shardInfo.getSuccessful()) { } if (shardInfo.getFailed() > 0) { for (ReplicationResponse.ShardInfo.Failure failure : shardInfo.getFailures()) { String reason = failure.reason(); } }
还能够检查文档是否被找到:文档
DeleteRequest request = new DeleteRequest("posts", "doc", "does_not_exist"); DeleteResponse deleteResponse = client.delete( request, RequestOptions.DEFAULT); if (deleteResponse.getResult() == DocWriteResponse.Result.NOT_FOUND) { }
若是存在版本冲突,则抛出ElasticsearchException
:get
try { DeleteResponse deleteResponse = client.delete( new DeleteRequest("posts", "doc", "1").version(2), RequestOptions.DEFAULT); } catch (ElasticsearchException exception) { if (exception.status() == RestStatus.CONFLICT) { } }