Java Low Level REST原来是这样操控ES的

前言

  1. 本篇文章是基于elasticsearch官网对于Java Low Level REST 客户端文档的解读

初始化

下图是Plumelog的Es客户端初始化的截图,以搞明白这里面的API操作含义去了解Es客户端的初始化
在这里插入图片描述

  1. 引入Maven依赖
    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>elasticsearch-rest-client</artifactId>
        <version>7.9.3</version>
    </dependency>
    
  2. 初始化
    2.1 一个RestClient实例可以通过内置的RestClientBuilder类构建,通过RestClient#builder(HttpHost…)静态方法创建,唯一需要的参数是客户端将与之通信的一个或多个主机
    	RestClient restClient = RestClient.builder(
                        new HttpHost("localhost", 9200, "http"),
                        new HttpHost("localhost", 9201, "http")).build();
    
    2.2 设置允许修改默认请求配置的回调(例如请求超时、身份验证或org.apache.http.client.config.RequestConfig.Builder 允许设置的任何内容)
    	RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "http"));
        builder.setHttpClientConfigCallback(new HttpClientConfigCallback() {
                @Override
                public HttpAsyncClientBuilder customizeHttpClient( HttpAsyncClientBuilder httpClientBuilder) {
                       return httpClientBuilder.setProxy(new HttpHost("proxy", 9000, "http"));  
                }
        });
    

执行请求

下图是PlumeLog的ES查询方法
在这里插入图片描述
在这里插入图片描述

  1. 一旦RestClient被创建,请求可以通过调用发送performRequest或performRequestAsync请求
    1.1 performRequest是同步的,将阻塞调用线程并Response在请求成功时返回或在失败时抛出异常
    Request request = new Request(
                            "GET",  //HTTP方法(GET,POST,HEAD等)
                             "/");   //服务器上的端点
    Response response = restClient.performRequest(request);
    
    1.2 performAsync是异步的,并接收一个ResponseListener参数
    Request request = new Request(
    					    "GET",  
    					    "/");   
    Cancellable cancellable = restClient.performRequestAsync(request,
        new ResponseListener() {
            @Override
            public void onSuccess(Response response) {   //处理响应 }
            @Override
            public void onFailure(Exception exception) {  //处理失败 }
    });
    
  2. 向请求对象添加请求参数
    request.addParameter("pretty", "true");
    
  3. 将请求体设置成任意的HttpEntity
    request.setEntity(new NStringEntity(
            "{\"json\":\"text\"}",
            ContentType.APPLICATION_JSON));
    

读取响应

该Response对象包装由http客户端返回的响应对象并公开一些附加信息

Response response = restClient.performRequest(new Request("GET", "/"));
RequestLine requestLine = response.getRequestLine(); //有关已执行请求的信息
HttpHost host = response.getHost(); //返回响应的主机
int statusCode = response.getStatusLine().getStatusCode(); //响应状态行,例如您可以从中检索状态代码
Header[] headers = response.getHeaders(); //响应头,也可以通过名称检索 getHeader(String)
String responseBody = EntityUtils.toString(response.getEntity());//包含在org.apache.http.HttpEntity 对象中的响应主体
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值