• springboot进行elasticsearch的开发


    目录

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

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

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


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

    es依赖包的版本设置

    6.4.3
    3.2.1.RELEASE

    
       
          org.elasticsearch
          elasticsearch
          ${elasticsearch.version}
          
             
                org.apache.logging.log4j
                log4j-api
             
          
       
       
          org.apache.logging.log4j
          log4j-api
          2.17.2
       
       
          org.elasticsearch.client
          transport
          ${elasticsearch.version}
       
       
          org.elasticsearch.client
          elasticsearch-rest-client
          ${elasticsearch.version}
       
       
          org.elasticsearch.client
          elasticsearch-rest-high-level-client
          ${elasticsearch.version}
       
       
          org.elasticsearch.plugin
          transport-netty4-client
          ${elasticsearch.version}
       
       
          org.springframework.boot
          spring-boot-starter-data-elasticsearch
       

    第二步:定义全局的变量,用于在开发环境或者说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 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);
            }
        }
    }
  • 相关阅读:
    java-net-php-python-springtboot外卖系统计算机毕业设计程序
    比较两个DataFrame的Python神器DataComPy
    python_data_analysis_and_mining_action-master-5
    C 语言 void指针
    基于SE-YOLOV4的变电站断路器分合状态识别算法
    UE5 - UI Material Lab 学习笔记
    IPv6实现内网穿透,极低成本保姆级教程
    Vue 组件实战
    Docker
    高被引论文有什么特征?
  • 原文地址:https://blog.csdn.net/qq_25580555/article/details/127590185