ElasticSearch 學習:JAVA HighLevel REST Client--獲取文件
一、按照索引號獲取文件內容
獲取文件資訊對應於HTTP的get請求,使用普通網頁請求顯示為
使用curl命令顯示為:
1.新建一個客戶client用於傳送請求和接收響應值
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("10.0.2.190",9200,"http")));
其中10.0.2.190為ES執行的主機,9200為埠號(預設),與trasport API和LOW LEVEL API不同。ES使用的是http協議,故最後指定了http,也可以不提供第三個引數,預設使用http
2.生成一個請求內容。
GetRequest getRequest = new GetRequest("music","songs","1");
其中,music為index,songs為type,“1”表示索引號,根據此索引號獲取文件。
為什麼要用GET而不用POST?
3.等待接收響應。
GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
需要說明的是,此處的申請是同步處理。即客戶端傳送請求後一直等著訊息返回。
HighLevel REST Client同時提供了非同步處理方式,呼叫方法為client.getAsync(getRequest, RequestOptions.DEFAULT, listener);
其中,listener為ActionListener<GetResponse>泛型函式,使用者需要自行實現回撥函式 ActionListener中的 onResponse和onFailure。
4.處理響應。
if(getResponse.isExists()) {
System.out.println(getResponse.getSourceAsString());
}
我這裡只是簡單的將其輸出至控制檯,你也可以做其他的處理。
5.關閉客戶client
client.close();
至此,使用按照索引號獲取文件內容就結束了。