ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

es5.1.1升级到7.14.2

2022-02-25 16:30:49  阅读:197  来源: 互联网

标签:7.14 jackson org 升级 es5.1 elasticsearch httpClientBuilder new builder


一、修改pom.xml文件

<properties>
    <es.version>7.14.2</es.version>
    <jackson.version>2.10.0</jackson.version>
</properties>

<dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-beans</artifactId>
     <version>5.2.6.RELEASE</version>
</dependency>
<dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-aop</artifactId>
     <version>5.2.6.RELEASE</version>
</dependency>
<dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-context</artifactId>
     <version>5.2.6.RELEASE</version>
</dependency>
<dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-web</artifactId>
     <version>5.2.6.RELEASE</version>
</dependency>
<dependency>
     <groupId>org.apache.httpcomponents</groupId>
     <artifactId>httpclient</artifactId>
     <version>4.5.12</version>
</dependency>
<dependency>
     <groupId>commons-httpclient</groupId>
     <artifactId>commons-httpclient</artifactId>
     <version>3.1</version>
</dependency>
<dependency>
     <groupId>com.fasterxml.jackson.core</groupId>
     <artifactId>jackson-databind</artifactId>
     <version>${jackson.version}</version>
</dependency>
<dependency>
     <groupId>com.fasterxml.jackson.core</groupId>
     <artifactId>jackson-annotations</artifactId>
     <version>${jackson.version}</version>
</dependency>
<dependency>
     <groupId>com.fasterxml.jackson.core</groupId>
     <artifactId>jackson-core</artifactId>
     <version>${jackson.version}</version>
</dependency>
<dependency>
     <groupId>org.elasticsearch</groupId>
     <artifactId>elasticsearch</artifactId>
     <version>${es.version}</version>
</dependency>
<dependency>
     <groupId>org.elasticsearch.plugin</groupId>
     <artifactId>percolator-client</artifactId>
     <version>${es.version}</version>
</dependency>
<dependency>
     <groupId>org.elasticsearch.client</groupId>
     <artifactId>elasticsearch-rest-high-level-client</artifactId>
     <version>${es.version}</version>
</dependency>
<dependency>
     <groupId>org.springframework.data</groupId>
     <artifactId>spring-data-elasticsearch</artifactId>
     <version>4.2.5</version>
</dependency>
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
     <version>2.5.4</version>
</dependency>
<dependency>
     <groupId>org.springframework.amqp</groupId>
     <artifactId>spring-rabbit</artifactId>
     <version>2.2.6.RELEASE</version>
</dependency>

注:pom.xml文件中springFarmeWrok版本要一直,否则项目启动报错:

httpClient版本不对也会报错:elasticsearch--Invalid receiver type interface org.apache.http.Header - 景岳 - 博客园

二:变更客户端client

RestHighLevelClient:
RestHighLevelClient client = new RestHighLevelClient(
        RestClient.builder(
                new HttpHost("localhost", 9200, "http"),
                new HttpHost("localhost", 9201, "http")));

我本地初始化客户端代码稍有不同:

public static RestHighLevelClient buildClient(String clusterName, String hosts, int port) {
        return buildClient(clusterName, hosts.split("\\s*,\\s*"), port);
    }

public static RestHighLevelClient buildClient(String clusterName, String[] hosts, int port) {
//        RestClientBuilder builder = RestClient.builder(Arrays.stream(hosts).map(host -> new HttpHost(host, port)).toArray(HttpHost[]::new));
//        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
//        //xpack账户认证
//        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "d0QSyh6tVI4W7663zxuc"));
//        //认证和线程数
//        builder.setHttpClientConfigCallback(httpClientBuilder -> {
//            httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
            if (null != esProperties.getThreadCount()) {

            }
//            httpClientBuilder.setDefaultIOReactorConfig(IOReactorConfig.custom().setIoThreadCount(25).build());
//            return httpClientBuilder;
//        });
//        builder.setRequestConfigCallback(requestConfigBuilder -> {
//            requestConfigBuilder.setConnectTimeout(30000);
//            requestConfigBuilder.setSocketTimeout(30000);
//            requestConfigBuilder.setConnectionRequestTimeout(30000);
//            return requestConfigBuilder;
//        });
//        builder.setHttpClientConfigCallback(httpClientBuilder -> {
//            httpClientBuilder.setMaxConnTotal(25);
//            httpClientBuilder.setMaxConnPerRoute(15);
//            return httpClientBuilder;
//        });
        final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
            .connectedTo(Arrays.stream(hosts).map(host -> new InetSocketAddress(host, port)).toArray(InetSocketAddress[]::new))
            .withBasicAuth("cluster.name", clusterName)
            .withConnectTimeout(30000).withSocketTimeout(30000)
            .withHttpClientConfigurer(httpClientBuilder -> {
                httpClientBuilder.setMaxConnTotal(25);
                httpClientBuilder.setMaxConnPerRoute(15);
                return httpClientBuilder;
            })
            .build();
        return RestClients.create(clientConfiguration).rest();
    }
        return RestClients.create(clientConfiguration).rest();

三、请求构建

//构建查询器
//5.1版本构建:
//SearchRequestBuilder builder = esClientProvider.getClient().prepareSearch(CommonUtils.getIndex(ds));
//7.14.2版本:
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();

//sourceBuilder.setQuery(QueryBuilders.boolQuery().must(queryBuilder));
//更新为:
sourceBuilder.query(QueryBuilders.boolQuery().must(queryBuilder);
//相应的aggregation(),from(),size()等方法也稍有变更
//执行获取结果
//response = builder.execute().actionGet();
//更新为:
SearchResponse response = esClientProvider.getClient()
    .search(new SearchRequest()
    .source(sourceBuilder), RequestOptions.DEFAULT);

四、不同请求方式变更

标签:7.14,jackson,org,升级,es5.1,elasticsearch,httpClientBuilder,new,builder
来源: https://blog.csdn.net/weixin_41688550/article/details/123127009

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有