前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >5、使用Java Low Level REST Client操作elasticsearch

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

作者头像
BUG弄潮儿
发布2020-06-12 16:18:59
1.2K0
发布2020-06-12 16:18:59
举报
文章被收录于专栏:JAVA乐园JAVA乐园

阅读文本大概需要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地址:

代码语言:javascript
复制
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配置

代码语言:javascript
复制
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-client</artifactId>
    <version>6.5.4</version>
</dependency>

2、 创建RestClient对象

代码语言:javascript
复制
public static RestClient getRestClient(){

    RestClient restClient = RestClient.builder(

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

    return restClient;

}

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

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

代码语言:javascript
复制
restClient.close();

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

代码语言:javascript
复制
//配置可选参数

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有如下,但是只有第一个没有标识过期,所以就使用第一个,其他的放弃使用。

代码语言:javascript
复制
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();

    }

}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BUG弄潮儿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档