Exists API
如果文檔存在,則exists
API返回true
,否則返回false
。
Exists請求
它就像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
:
boolean exists = client.exists(getRequest, RequestOptions.DEFAULT);
異步執行
執行GetRequest
也可以以異步方式完成,以便客戶端可以直接返回,用戶需要通過將請求和偵聽器傳遞給異步exists
方法來指定響應或潛在故障的處理方式:
client.existsAsync(getRequest, RequestOptions.DEFAULT, listener);
- 要執行的
GetRequest
和執行完成時要使用的ActionListener
。
異步方法不會阻塞並立即返回,完成後,如果執行成功完成,則使用onResponse
方法回調ActionListener
,如果失敗則使用onFailure
方法。
exists
的典型偵聽器如下所示:
ActionListener<Boolean> listener = new ActionListener<Boolean>() {
@Override
public void onResponse(Boolean exists) {
}
@Override
public void onFailure(Exception e) {
}
};
-
onResponse
— 執行成功完成時調用。 -
onFailure
— 在整個GetRequest
失敗時調用。