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) { } }