摘要:將標志設(shè)置為默認為。響應(yīng)返回的允許檢索所請求的文檔及其元數(shù)據(jù)和最終存儲的字段。如果已請求特定文檔版本,并且現(xiàn)有文檔具有不同的版本號,則會引發(fā)版本沖突引發(fā)的異常表示返回了版本沖突錯誤。
Get API Get請求
GetRequest需要以下參數(shù):
GetRequest getRequest = new GetRequest( "posts", "doc", "1");
posts — 索引。
doc — 類型。
1 — 文檔id。
可選參數(shù)可以選擇提供以下參數(shù):
request.fetchSourceContext(FetchSourceContext.DO_NOT_FETCH_SOURCE);
禁用源檢索,默認情況下啟用
String[] includes = new String[]{"message", "*Date"}; String[] excludes = Strings.EMPTY_ARRAY; FetchSourceContext fetchSourceContext = new FetchSourceContext(true, includes, excludes); request.fetchSourceContext(fetchSourceContext);
為特定字段配置源包含
String[] includes = Strings.EMPTY_ARRAY; String[] excludes = new String[]{"message"}; FetchSourceContext fetchSourceContext = new FetchSourceContext(true, includes, excludes); request.fetchSourceContext(fetchSourceContext);
為特定字段配置源排除
request.storedFields("message"); GetResponse getResponse = client.get(request, RequestOptions.DEFAULT); String message = getResponse.getField("message").getValue();
配置特定存儲字段的檢索(要求字段分別存儲在映射中)。
檢索message存儲字段(要求字段分別存儲在映射中)。
request.routing("routing");
路由值。
request.parent("parent");
parent值。
request.preference("preference");
偏好值。
request.realtime(false);
將realtime標志設(shè)置為false(默認為true)。
request.refresh(true);
在檢索文檔之前執(zhí)行刷新(默認為false)。
request.version(2);
版本。
request.versionType(VersionType.EXTERNAL);
版本類型。
同步執(zhí)行以下列方式執(zhí)行GetRequest時,客戶端在繼續(xù)執(zhí)行代碼之前等待返回GetResponse:
GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);異步執(zhí)行
執(zhí)行GetRequest也可以以異步方式完成,以便客戶端可以直接返回,用戶需要通過將請求和偵聽器傳遞給異步get方法來指定響應(yīng)或潛在故障的處理方式:
client.getAsync(request, RequestOptions.DEFAULT, listener);
要執(zhí)行的GetRequest和執(zhí)行完成時要使用的ActionListener。
異步方法不會阻塞并立即返回,完成后,如果執(zhí)行成功完成,則使用onResponse方法回調(diào)ActionListener,如果失敗則使用onFailure方法。
get的典型監(jiān)聽器看起來像:
ActionListenerlistener = new ActionListener () { @Override public void onResponse(GetResponse getResponse) { } @Override public void onFailure(Exception e) { } };
onResponse — 執(zhí)行成功完成時調(diào)用。
onFailure — 在整個GetRequest失敗時調(diào)用。
Get響應(yīng)返回的GetResponse允許檢索所請求的文檔及其元數(shù)據(jù)和最終存儲的字段。
String index = getResponse.getIndex(); String type = getResponse.getType(); String id = getResponse.getId(); if (getResponse.isExists()) { long version = getResponse.getVersion(); String sourceAsString = getResponse.getSourceAsString(); MapsourceAsMap = getResponse.getSourceAsMap(); byte[] sourceAsBytes = getResponse.getSourceAsBytes(); } else { }
以字符串形式檢索文檔。
將文檔檢索為Map
以byte[]的形式檢索文檔。
處理未找到文檔的方案,請注意,雖然返回的響應(yīng)具有404狀態(tài)代碼,但返回有效的GetResponse而不是拋出異常,此類響應(yīng)不包含任何源文檔,并且其isExists方法返回false。
當針對不存在的索引執(zhí)行get請求時,響應(yīng)具有404狀態(tài)代碼,拋出ElasticsearchException,需要按如下方式處理:
GetRequest request = new GetRequest("does_not_exist", "doc", "1"); try { GetResponse getResponse = client.get(request, RequestOptions.DEFAULT); } catch (ElasticsearchException e) { if (e.status() == RestStatus.NOT_FOUND) { } }
處理拋出的異常,因為索引不存在。
如果已請求特定文檔版本,并且現(xiàn)有文檔具有不同的版本號,則會引發(fā)版本沖突:
try { GetRequest request = new GetRequest("posts", "doc", "1").version(2); GetResponse getResponse = client.get(request, RequestOptions.DEFAULT); } catch (ElasticsearchException exception) { if (exception.status() == RestStatus.CONFLICT) { } }
引發(fā)的異常表示返回了版本沖突錯誤。
上一篇:Index API 下一篇:Exists API文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/72373.html
摘要:用于的官方高級別客戶端,基于低級別客戶端,它公開特定的方法,并負責(zé)請求編組和響應(yīng)反編組。入門初始化執(zhí)行請求讀取響應(yīng)日志記錄通用配置嗅探器在中被添加。依賴于核心項目,它接受與相同的請求參數(shù),并返回相同的響應(yīng)對象。 Elasticsearch Java REST Client Java REST Client有兩種類型: Java Low Level REST Client:用于Elast...
摘要:入門本節(jié)描述從獲取工件到在應(yīng)用程序中使用它如何開始使用高級別客戶端。保證能夠與運行在相同主版本和大于或等于的次要版本上的任何節(jié)點通信。與具有相同的發(fā)布周期,將版本替換為想要的客戶端版本。 Java High Level REST Client 入門 本節(jié)描述從獲取工件到在應(yīng)用程序中使用它如何開始使用高級別REST客戶端。 兼容性 Java High Level REST Client需...
閱讀 2584·2021-11-22 09:34
閱讀 961·2021-11-19 11:34
閱讀 2813·2021-10-14 09:42
閱讀 1497·2021-09-22 15:27
閱讀 2396·2021-09-07 09:59
閱讀 1747·2021-08-27 13:13
閱讀 3440·2019-08-30 11:21
閱讀 783·2019-08-29 18:35