springboot集成Elasticsearch7.16,使用https方式连接并忽略SSL证书

这篇具有很好参考价值的文章主要介绍了springboot集成Elasticsearch7.16,使用https方式连接并忽略SSL证书。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

千万万苦利用科学上网找到了,记录一下文章来源地址https://www.toymoban.com/news/detail-697447.html

package com.warn.config.baseconfig;

import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.json.jackson.JacksonJsonpMapper;
import co.elastic.clients.transport.ElasticsearchTransport;
import co.elastic.clients.transport.rest_client.RestClientTransport;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.common.util.text.Convert;
import com.warn.entity.SettingVar;
import com.warn.mapper.SettingVarMapper;
import com.warn.util.EncryptUtil;
import lombok.extern.slf4j.Slf4j;
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.client.config.RequestConfig;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.apache.http.ssl.SSLContextBuilder;
import org.apache.http.ssl.SSLContexts;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.annotation.Resource;
import javax.net.ssl.SSLContext;
import java.io.File;

/**
 * @author fjl
 * @date 2022/5/6
 */
@Slf4j
@Configuration
public class ElasticSearchClientConfig {

    @Resource
    private SettingVarMapper varMapper;

    @Value("${es.connectTimeout}")
    private Integer connectTimeout;

    @Value("${es.socketTimeout}")
    private Integer socketTimeout;
    private static final Integer ES_ID = 30;

    @Value("${filePath}")
    private String filePath;
    private static String esInfo = "esInfo.txt";

    public static String esUrl;

    public static Integer esPort;

    public static String esAccount;

    public static String esPassword;


    //配置RestHighLevelClient依赖到spring容器中待用
    @Bean
    public ElasticsearchClient restHighLevelClient() throws Exception {
        log.info("--- 初始化es链接开始 --- ");
        EncryptUtil.checkFileExist(filePath);
        String esFilePath = filePath + esInfo;
        File esFile = new File(esFilePath);
        boolean esExists = esFile.exists();
        log.info("---  检查es地址文件是否存在 --- {} esPath:{} ", esExists, esFilePath);
        if (!esExists) {
            // 获取es地址
            LambdaQueryWrapper<SettingVar> wrapper = new LambdaQueryWrapper<SettingVar>()
                    .eq(SettingVar::getId, ES_ID)
                    .select(SettingVar::getValue);
            SettingVar settingVar = varMapper.selectOne(wrapper);
            if (null != settingVar) {
                log.info("--- es地址信息  {}", settingVar.getValue());
                String value = settingVar.getValue();
                getEsAddr(value);
                // 创建文件并写入
                EncryptUtil.createFile(esFilePath, value);
            }
        } else {
            // 存在读取赋值
            String value = EncryptUtil.readLine(esFilePath);
            getEsAddr(value);
            log.info("***  es地址读取完成 --- {} ", value);
        }

        try {
            CredentialsProvider credentialsProvider =
                    new BasicCredentialsProvider();
            credentialsProvider.setCredentials(AuthScope.ANY,
                    new UsernamePasswordCredentials(esAccount, esPassword));

            SSLContextBuilder sslBuilder = SSLContexts.custom()
                    .loadTrustMaterial(null, (x509Certificates, s) -> true);
            final SSLContext sslContext = sslBuilder.build();
            RestClientBuilder restBuilder = RestClient.builder(
                            new HttpHost(esUrl, esPort, "https"))
                    .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
                        @Override
                        public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                            return httpClientBuilder
                                    .setSSLContext(sslContext)
                                    .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
                                    .setDefaultCredentialsProvider(credentialsProvider);
                        }
                    })
                    .setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
                        @Override
                        public RequestConfig.Builder customizeRequestConfig(
                                RequestConfig.Builder requestConfigBuilder) {
                            return requestConfigBuilder.setConnectTimeout(5000)
                                    .setSocketTimeout(120000);
                        }
                    });
            RestClient restClient = restBuilder.build();
            ElasticsearchTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper());
            ElasticsearchClient client = new ElasticsearchClient(transport);
            log.info("*** 初始化es链接完成 *** ");

            return client;
        } catch (Exception e) {
            throw new Exception("******  es初始化连接失败");
        }
    }

    public void getEsAddr(String value) {
        JSONObject jsonObject = JSONObject.parseObject(value);
        String url = com.common.util.text.Convert.toStr(jsonObject.get("addr"));
        int port = com.common.util.text.Convert.toInt(jsonObject.get("port"));
        String account = com.common.util.text.Convert.toStr(jsonObject.get("account"));
        String password = Convert.toStr(jsonObject.get("password"));
        esUrl = url;
        esPort = port;
        esAccount = account;
        esPassword = password;
    }
}

到了这里,关于springboot集成Elasticsearch7.16,使用https方式连接并忽略SSL证书的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ElasticSearch 学习9 spring-boot ,elasticsearch7.16.1实现中文拼音分词搜索

    一、elasticsearch官网下载:Elasticsearch 7.16.1 | Elastic 二、拼音、ik、繁简体转换插件安装 ik分词:GitHub - medcl/elasticsearch-analysis-ik: The IK Analysis plugin integrates Lucene IK analyzer into elasticsearch, support customized dictionary. 拼音分词:GitHub - medcl/elasticsearch-analysis-pinyin: This Pinyin Analysis plugin is

    2024年01月22日
    浏览(51)
  • docker安装ElasticSearch7.13.4、配置登录密码、开启HTTPS、安装ik分词器

    提示: 运行容器命令 推荐 使用单机多节点的命令执行,所需配置文件要提前准备

    2024年02月14日
    浏览(44)
  • Spring boot 2.3.12集成ElasticSearch7.6.2并进行CRUD

    本篇博客主要讲解Spring boot 2.3.12集成ElasticSearch7.6.2并进行CRUD操作。其它版本的spring boot集成ElasticSearch类似,只需要具体各自的版本是否匹配。通过本篇博客能够成功集成ElasticSearch并进行CRUD操作,适合刚接触ElasticSearch需要进行简单CRUD操作的读者。 在集成ElasticSearch之前需要明

    2023年04月08日
    浏览(50)
  • Springboot实战16 消息驱动:如何使用 RabbitTemplate 集成 RabbitMQ?

    15 讲我们介绍了基于 ActiveMQ 和 JmsTemplate 实现消息发送和消费,并重构了 SpringCSS 案例系统中的 account-service 和 customer-service 服务。 今天,我们将介绍另一款主流的消息中间件 RabbitMQ,并基于 RabbitTemplate 模板工具类为 SpringCSS 案例添加对应的消息通信机制。 AMQP 规范与 RabbitM

    2024年02月02日
    浏览(50)
  • SpringBoot3 整合 ElasticSearch7 示例

    做仿牛客项目需要使用 es 做搜索,但是老师示例的是 SpringBoot2 + es6 去做的,然而我用的是 Spring3 + es7.17.10,于是踩了很多的坑。 在 es7 中,配置文件和查询所需的实现类都做了很大的改动,我以能成功运行的代码为例,大概说一下怎么配置和使用。 首先 yml 配置文件发生了变

    2024年02月07日
    浏览(52)
  • 【SpringBoot整合ElasticSearch7.x及实战】

    此笔记内容为狂神说SpringBoot整合ElasticSearch部分 目录 一、SpringBoot整合 1、创建工程 2、导入依赖 导入elasticsearch依赖 提前导入fastjson、lombok 3、创建并编写配置类 4、创建并编写实体类 5、测试 索引的操作 文档的操作 二、ElasticSearch实战 防京东商城搜索(高亮) 1、工程创建(

    2024年02月08日
    浏览(59)
  • elasticsearch使用SpringBoot 连接Https问题

    SpringBoot整合elasticsearch初探:  导入相关的jar包。然后在配置文件中配置es的相关属性: 然后新建一个客户端工具类,将与es交互的所有基础操作写进工具类中,工具类注入连接es的客户端:  client直接注入就好,因为SpringBoot已经将客户端自动注册到Spring容器中了。 客户端尝

    2024年02月14日
    浏览(40)
  • SpringBoot集成elasticsearch使用(增删改查)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Elasticsearch 是一个实时的分布式存储、搜索、分析的引擎。(全文引擎) 系统 :windows 10 elasticsearch官网下载地址链接: 下载好对应的windows版本,解压到任意工作目录,es的安装非常方便,解压即用。 刚下载

    2024年02月06日
    浏览(60)
  • Java + SpringBoot 操作 ElasticSearch7.x.x工具类RestHighLevelClientUtils

    ElasticSearch创建索引,删除索引,判断 index 是否存在,根据 id 删除指定索引中的文档, 根据 id 更新指定索引中的文档,根据 id 更新指定索引中的文档,根据某字段的 k-v 更新索引中的文档, 添加文档 手动指定id,简单模糊匹配 默认分页为 0,10, term 查询 精准匹配,term 查询

    2024年02月13日
    浏览(49)
  • python使用ElasticSearch7.17.6笔记

    数操作系统:windows10 我开始使用最新的版本,8.4.1但是使用过程中kibana启动不了,就索性使用旧版; 下载地址: es7.17.6 下载地址  kibana7.17.6下载地址 解压到合适的位置,更改elasticsearch.yml 添加配置如下: 更改kibana.yml配置 到各自的bin目录下启动两个服务bat文件, 在浏览器中

    2024年02月07日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包