我是靠谱客的博主 无语火车,最近开发中收集的这篇文章主要介绍springboot进行elasticsearch的开发,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

第一步:进行es的相关依赖的处理

第二步:定义全局的变量,用于在开发环境或者说uat环境动态变更处理

第三步:定义springboot的es的配置类


第一步:进行es的相关依赖的处理

es依赖包的版本设置

<elasticsearch.version>6.4.3</elasticsearch.version>
<spring.data.elasticsearch.version>3.2.1.RELEASE</spring.data.elasticsearch.version>

<!-- elasticsearch -->
   <dependency>
      <groupId>org.elasticsearch</groupId>
      <artifactId>elasticsearch</artifactId>
      <version>${elasticsearch.version}</version>
      <exclusions>
         <exclusion>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
         </exclusion>
      </exclusions>
   </dependency>
   <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>2.17.2</version>
   </dependency>
   <dependency>
      <groupId>org.elasticsearch.client</groupId>
      <artifactId>transport</artifactId>
      <version>${elasticsearch.version}</version>
   </dependency>
   <dependency>
      <groupId>org.elasticsearch.client</groupId>
      <artifactId>elasticsearch-rest-client</artifactId>
      <version>${elasticsearch.version}</version>
   </dependency>
   <dependency>
      <groupId>org.elasticsearch.client</groupId>
      <artifactId>elasticsearch-rest-high-level-client</artifactId>
      <version>${elasticsearch.version}</version>
   </dependency>
   <dependency>
      <groupId>org.elasticsearch.plugin</groupId>
      <artifactId>transport-netty4-client</artifactId>
      <version>${elasticsearch.version}</version>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
   </dependency>

第二步:定义全局的变量,用于在开发环境或者说uat环境动态变更处理

第三步:定义springboot的es的配置类

import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SpringBootElasticsearchConfig {
    private Logger LOGGER = LoggerFactory.getLogger(SpringBootElasticsearchConfig.class);
    @Value("${system.elasticsearch.schema:http}")
    private String schema;
    @Value("${system.elasticsearch.address:#{null}}")
    private String address;
    @Value("${system.elasticsearch.userName:#{null}}")
    private String userName;
    @Value("${system.elasticsearch.password:#{null}}")
    private String password;
    @Value("${system.elasticsearch.connectTimeout:10000}")
    private int connectTimeout;
    @Value("${system.elasticsearch.socketTimeout:60000}")
    private int socketTimeout;
    @Value("${system.elasticsearch.connectionRequestTimeout:10000}")
    private int connectionRequestTimeout;
    @Value("${system.elasticsearch.maxConnectTotal:1000}")
    private int maxConnectTotal;
    @Value("${system.elasticsearch.maxConnectPerRoute:500}")
    private int maxConnectPerRoute;
    @Value("${system.elasticsearch.keepAliveTime:3600000}")
    private long keepAliveTime;

    public SpringBootElasticsearchConfig() {
    }

    @Bean(
        name = {"restHighLevelClient"},
        destroyMethod = "close"
    )
    public RestHighLevelClient restHighLevelClient() {
        if (!StringUtils.isNotBlank(this.address)) {
            return null;
        } else {
            this.LOGGER.info("start init elasticsearch address:" + this.address);
            List<HttpHost> hostLists = new ArrayList();
            String[] hostList = this.address.split(",");
            String[] var3 = hostList;
            int var4 = hostList.length;

            for(int var5 = 0; var5 < var4; ++var5) {
                String addr = var3[var5];
                String host = addr.trim().split(":")[0];
                String port = addr.trim().split(":")[1];
                hostLists.add(new HttpHost(host, Integer.parseInt(port), this.schema));
            }

            HttpHost[] httpHost = (HttpHost[])hostLists.toArray(new HttpHost[0]);
            RestClientBuilder builder = RestClient.builder(httpHost);
            builder.setRequestConfigCallback((requestConfigBuilder) -> {
                requestConfigBuilder.setConnectTimeout(this.connectTimeout);
                requestConfigBuilder.setSocketTimeout(this.socketTimeout);
                requestConfigBuilder.setConnectionRequestTimeout(this.connectionRequestTimeout);
                return requestConfigBuilder;
            });
            builder.setHttpClientConfigCallback((httpClientBuilder) -> {
                httpClientBuilder.setMaxConnTotal(this.maxConnectTotal);
                httpClientBuilder.setMaxConnPerRoute(this.maxConnectPerRoute);
                httpClientBuilder.setKeepAliveStrategy((response, context) -> {
                    return this.keepAliveTime;
                });
                if (StringUtils.isNotBlank(this.userName)) {
                    this.LOGGER.info("start setting  username and password  of  elasticsearch");
                    CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
                    credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(this.userName, this.password));
                    httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                }

                return httpClientBuilder;
            });
            return new RestHighLevelClient(builder);
        }
    }
}

最后

以上就是无语火车为你收集整理的springboot进行elasticsearch的开发的全部内容,希望文章能够帮你解决springboot进行elasticsearch的开发所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部