5、使用Java Low Level REST Client操作elasticsearch

阅读文本大概需要7分钟。

Java REST客户端有两种风格:

Java低级别REST客户端(Java Low LevelREST Client):Elasticsearch的官方low-level客户端。它允许通过http与Elasticsearch集群进行通信。不会对请求进行编码和响应解码。 它与所有Elasticsearch版本兼容。

Java高级REST客户端(Java HighLevel REST Client):Elasticsearch的官方high-level客户端。 基于low-level客户端,它公开了特定API操作Elasticsearch。

官方API地址:

https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-overview.html

Java Low Level REST Client所需的最低Java版本是1.7。低级客户端与Elasticsearch的发布周期相同。发布的第一个版本为5.0.0-alpha4。客户端版本和与之通信的Elasticsearch版本没有任何关系,可以替换客户端版本为你想要的任何版本。低级客户端与所有Elasticsearch版本兼容。

 

1、        Maven配置

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-client</artifactId>
    <version>6.5.4</version>
</dependency>

2、        创建RestClient对象

public static RestClient getRestClient(){

    RestClient restClient = RestClient.builder(

            new HttpHost("localhost", 9200, "http")).build();

    return restClient;

}

RestClient实例可以通过RestClientBuilder类创建,通过RestClient 的 builder(HttpHost ...)静态方法创建。 唯一需要的参数是客户端将与之通信的一个或多个主机

 

RestClient类是线程安全的,理想情况下与使用它的应用程序具有相同的生命周期。当不再需要时关闭它是非常重要的,这样它所使用的所有资源以及底层http客户端实例及其线程都可以得到释放。

restClient.close();

 

RestClientBuilder还允许在构建RestClient实例时对默认参数进行配置。

//配置可选参数

RestClientBuilder builder = RestClient.builder(

        new HttpHost("localhost", 9200, "http"));

Header[] defaultHeaders = new Header[]{new BasicHeader("header", "value")};

//设置每个请求需要发送的默认headers,这样就不用在每个请求中指定它们。

builder.setDefaultHeaders(defaultHeaders);

// 设置应该授予的超时时间,以防对相同的请求进行多次尝试。默认值是30秒,与默认socket超时时间相同。

// 如果自定义socket超时时间,则应相应地调整最大重试超时时间。

builder.setMaxRetryTimeoutMillis(10000);

builder.setFailureListener(new RestClient.FailureListener() {



    public void onFailure(HttpHost host) {

        //设置一个监听程序,每次节点发生故障时都会收到通知,这样就可以采取相应的措施。

        //Used internally when sniffing on failure is enabled.(这句话没搞懂啥意思)

    }

});

builder.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {



    public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder requestConfigBuilder) {

        //设置允许修改默认请求配置的回调

        // (例如,请求超时,身份验证或org.apache.http.client.config.RequestConfig.Builder允许设置的任何内容)

        return requestConfigBuilder.setSocketTimeout(10000);

    }

});

builder.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {



    public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {

        //设置允许修改http客户端配置的回调

        // (例如,通过SSL的加密通信,或者org.apache.http.impl.nio.client.HttpAsyncClientBuilder允许设置的任何内容)

        return httpClientBuilder.setProxy(new HttpHost("proxy", 9000, "http"));

    }

});

3、        创建Document索引

RestClient有如下,但是只有第一个没有标识过期,所以就使用第一个,其他的放弃使用。

public static void getCreateIndx(RestClient client){

    String method = "PUT";

    String endpoint = "/book";

    try {

        Request request  = new Request(method, endpoint);

        Response response = client.performRequest(request);

        System.out.println(EntityUtils.toString(response.getEntity()));

    }catch (Exception e) {

        e.printStackTrace();

    }

}

推荐阅读

Spring Boot 最流行的 16 条实践

SSM框架的面试常见问题

【分布式】缓存穿透、缓存雪崩,缓存击穿解决方案

阿里P7给出的一份超详细 Spring Boot 知识清单

关注我每天进步一点点

你点的每个在看,我都认真当成了喜欢

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BUG弄潮儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值