1. javaAPI操作
1.1 elasticsearch-rest-client
(1) maven依賴
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>${rest.client.version}</version><!-- 7.3.0 -->
</dependency>
(2) 相關API(7.3.0)
1. 創建客戶端
//es客戶端構造器 RestClientBuilder builder = RestClient.builder(new HttpHost(String hostname, int port, String scheme)); Header[] defaultHeaders = new Header[]{new BasicHeader(String name, String value)}; //設置默認請求頭 builder.setDefaultHeaders(defaultHeaders); //異常監聽器 builder.setFailureListener(new RestClient.FailureListener(){ @Override public void onFailure(Node node) { // TODO es異常監聽處理 System.out.println(21321321); } }); //配置線程數 builder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback(){ @Override public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) { httpAsyncClientBuilder.setDefaultIOReactorConfig(IOReactorConfig.custom().setIoThreadCount(1).build()); return httpAsyncClientBuilder; } }); //設置超時時間 builder.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback(){ @Override public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder builder) { builder.setConnectTimeout(5000); builder.setSocketTimeout(60000); return builder; } }); //創建客戶端 RestClient restClient = builder.build();
2. 定義請求信息
Request request = new Request(String method, String endpoint);
3. 定義參數實體
HttpEntity entity=new NStringEntity(String data, ContentType contentType);//json ContentType.APPLICATION_JSON
4. 響應
Response response = restClient.performRequest(Request request);//同步
Response response = restClient.performRequestAsync(Request request, ResponseListener responseListener);//異步
5. 響應信息
response.getStatusLine().getStatusCode();//狀態碼 String responseBody = EntityUtils.toString(response.getEntity());//響應體
(3) 實例(7.3.0)
RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "http"));//設置HttpHost,可設置多個
Header[] defaultHeaders = new Header[]{new BasicHeader("header", "value")};
builder.setDefaultHeaders(defaultHeaders);//設置請求頭
builder.setFailureListener(new RestClient.FailureListener(){
@Override
public void onFailure(Node node) {
// TODO es異常監聽處理
}
});
builder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback(){
@Override
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) {
// TODO 連接池配置eshttpAsyncClientBuilder.setDefaultIOReactorConfig(IOReactorConfig.custom().setIoThreadCount(1).build());
return httpAsyncClientBuilder;
}
});
builder.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback(){
@Override
public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder builder) {
// TODO 超時時間配置
builder.setConnectTimeout(5000);
builder.setSocketTimeout(60000);
return builder;
}
});
RestClient restClient = builder.build();
String queryString="";//定義查詢json
HttpEntity entity = new NStringEntity(queryString, ContentType.APPLICATION_JSON);
Request request = new Request("get", "index/_search");
request.setEntity(entity);//設置參數及查詢條件
Response response = restClient.performRequest(request);//請求獲取響應信息
System.out.println(response.getStatusLine().getStatusCode());//響應狀態碼
String responseBody = EntityUtils.toString(response.getEntity());//獲取響應體
1.2