若是文檔存在,則exists
API返回true
,不然返回false
。segmentfault
它就像Get API同樣使用GetRequest
,支持全部可選參數,因爲exists()
只返回true
或false
,咱們建議關閉獲取_source
和任何存儲的字段,以便請求稍微輕一點:異步
GetRequest getRequest = new GetRequest( "posts", "doc", "1"); getRequest.fetchSourceContext(new FetchSourceContext(false)); getRequest.storedFields("_none_");
posts
— 索引。doc
— 類型。1
— 索引id。FetchSourceContext(false)
— 禁用提取_source
。storedFields("_none_")
— 禁用提取存儲的字段。如下列方式執行GetRequest
時,客戶端在繼續執行代碼以前等待返回boolean
:ide
boolean exists = client.exists(getRequest, RequestOptions.DEFAULT);
執行GetRequest
也能夠以異步方式完成,以便客戶端能夠直接返回,用戶須要經過將請求和偵聽器傳遞給異步exists
方法來指定響應或潛在故障的處理方式:post
client.existsAsync(getRequest, RequestOptions.DEFAULT, listener);
GetRequest
和執行完成時要使用的ActionListener
。異步方法不會阻塞並當即返回,完成後,若是執行成功完成,則使用onResponse
方法回調ActionListener
,若是失敗則使用onFailure
方法。fetch
exists
的典型偵聽器以下所示:code
ActionListener<Boolean> listener = new ActionListener<Boolean>() { @Override public void onResponse(Boolean exists) { } @Override public void onFailure(Exception e) { } };
onResponse
— 執行成功完成時調用。onFailure
— 在整個GetRequest
失敗時調用。