Elasticsearch Java Low Level REST Client(讀取響應)

讀取響應

Response對象由同步performRequest方法返回或做爲ResponseListener#onSuccess(Response)中的參數接收,它包裝http客戶端返回的響應對象並公開一些其餘信息。html

Response response = restClient.performRequest(new Request("GET", "/"));
RequestLine requestLine = response.getRequestLine(); 
HttpHost host = response.getHost(); 
int statusCode = response.getStatusLine().getStatusCode(); 
Header[] headers = response.getHeaders(); 
String responseBody = EntityUtils.toString(response.getEntity());
  • response.getRequestLine() — 有關執行的請求的信息。
  • response.getHost() — 返回響應的主機。
  • response.getStatusLine() — 響應狀態行,你能夠從中檢索狀態代碼。
  • response.getHeaders() — 響應頭,也能夠經過getHeader(String)按名稱檢索。
  • response.getEntity() — 響應體包含在org.apache.http.HttpEntity對象中。

執行請求時,會拋出異常(或在如下方案中做爲ResponseListener#onFailure(Exception)中的參數接收:java

IOExceptionapache

  • 通訊問題(例如SocketTimeoutException

ResponseExceptionjson

  • 返回了一個響應,但其狀態代碼表示錯誤(不是2xx),ResponseException源自有效的http響應,所以它公開其相應的Response對象,該對象提供對返回的響應的訪問。
對於返回 404狀態碼的 HEAD請求,不會拋出 ResponseException,由於它是一個預期的 HEAD響應,僅表示找不到該資源。除非 ignore參數包含 404,不然全部其餘 HTTP方法(例如, GET)都會爲 404響應拋出 ResponseExceptionignore是一個特殊的客戶端參數,不會發送到Elasticsearch幷包含逗號分隔的錯誤狀態代碼列表,它容許控制是否應將某些錯誤狀態碼視爲預期響應而不是異常。這對於例如 getapi頗有用,由於它能夠在文檔丟失時返回 404,在這種狀況下,響應正文將不包含錯誤,而是一般的 getapi響應,只是沒有找到未找到的文檔。

請注意,低級別客戶端不會公開任何json編組和反編組的輔助程序,用戶能夠自由地使用他們喜歡的庫。segmentfault

底層的Apache Async Http Client附帶了不一樣的org.apache.http.HttpEntity實現,容許以不一樣的格式提供請求體(流、字節數組、字符串等),至於讀取響應體,HttpEntity#getContent方法很方便,它返回從先前緩衝的響應體讀取的InputStream,做爲替代方案,能夠提供自定義org.apache.http.nio.protocol.HttpAsyncResponseConsumer來控制字節的讀取和緩衝方式。api

日誌記錄

Java REST客戶端使用Apache Async Http Client使用的相同日誌庫:Apache Commons Logging,它支持許多流行的日誌記錄實現,啓用日誌記錄的java包是客戶端自己的org.elasticsearch.client和嗅探器的org.elasticsearch.client.sniffer數組

還能夠啓用請求跟蹤器日誌記錄,以便以curl格式記錄每一個請求和相應的響應,這在調試時很方便,例如,若是須要手動執行請求以檢查它是否仍然產生與它相同的響應,爲tracer包啓用跟蹤日誌記錄以打印出此類日誌行,請注意,此類日誌記錄開銷很大,不該在生產環境中始終啓用,而是僅在須要時暫時使用。curl


上一篇:執行請求

下一篇:通用配置

相關文章
相關標籤/搜索