GetRequest
須要如下參數:segmentfault
GetRequest getRequest = new GetRequest( "posts", "doc", "1");
posts
— 索引。doc
— 類型。1
— 文檔id。能夠選擇提供如下參數:異步
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");
request.preference("preference");
request.realtime(false);
realtime
標誌設置爲false
(默認爲true
)。request.refresh(true);
false
)。request.version(2);
request.versionType(VersionType.EXTERNAL);
如下列方式執行GetRequest
時,客戶端在繼續執行代碼以前等待返回GetResponse
:ide
GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
執行GetRequest
也能夠以異步方式完成,以便客戶端能夠直接返回,用戶須要經過將請求和偵聽器傳遞給異步get
方法來指定響應或潛在故障的處理方式:post
client.getAsync(request, RequestOptions.DEFAULT, listener);
GetRequest
和執行完成時要使用的ActionListener
。異步方法不會阻塞並當即返回,完成後,若是執行成功完成,則使用onResponse
方法回調ActionListener
,若是失敗則使用onFailure
方法。fetch
get
的典型監聽器看起來像:code
ActionListener<GetResponse> listener = new ActionListener<GetResponse>() { @Override public void onResponse(GetResponse getResponse) { } @Override public void onFailure(Exception e) { } };
onResponse
— 執行成功完成時調用。onFailure
— 在整個GetRequest失敗時調用。返回的GetResponse
容許檢索所請求的文檔及其元數據和最終存儲的字段。索引
String index = getResponse.getIndex(); String type = getResponse.getType(); String id = getResponse.getId(); if (getResponse.isExists()) { long version = getResponse.getVersion(); String sourceAsString = getResponse.getSourceAsString(); Map<String, Object> sourceAsMap = getResponse.getSourceAsMap(); byte[] sourceAsBytes = getResponse.getSourceAsBytes(); } else { }
Map<String, Object>
。byte[]
的形式檢索文檔。404
狀態代碼,但返回有效的GetResponse
而不是拋出異常,此類響應不包含任何源文檔,而且其isExists
方法返回false
。當針對不存在的索引執行get
請求時,響應具備404
狀態代碼,拋出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) { } }
若是已請求特定文檔版本,而且現有文檔具備不一樣的版本號,則會引起版本衝突:文檔
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) { } }