ES-javaAPI

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 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章