当前位置: 首页 > news >正文

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

千万万苦利用科学上网找到了,记录一下

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 {@Resourceprivate 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容器中待用@Beanpublic 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() {@Overridepublic HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {return httpClientBuilder.setSSLContext(sslContext).setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE).setDefaultCredentialsProvider(credentialsProvider);}}).setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {@Overridepublic 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;}
}
http://www.lryc.cn/news/157119.html

相关文章:

  • 【已解决】pycharm 突然每次点击都开新页面,关不掉怎么办?
  • AndroidStudio最下方显示不出来Terminal等插件
  • python基础操作笔记
  • c++ 学习 之 指针常量 和 常量指针
  • Redis未授权访问漏洞实战
  • 【web开发】2、css基础
  • 循迹小车原理介绍和代码示例
  • redis未授权访问
  • 【数学建模竞赛】优化类赛题常用算法解析
  • Python实现SSA智能麻雀搜索算法优化LightGBM回归模型(LGBMRegressor算法)项目实战
  • OpenCV(二十一):椒盐噪声和高斯噪声的产生
  • 【设计模式】Head First 设计模式——构建器模式 C++实现
  • 基于Python+Django深度学习的身份证识别考勤系统设计与实现
  • Unity控制程序退出
  • C++ using的多种用法
  • Java环境的安装
  • 【ES6】js中的__proto__和prototype
  • 工程项目管理系统源码-简洁+好用+全面-工程项目管理
  • 后端SpringBoot+前端Vue前后端分离的项目(二)
  • 【5】openGL使用宏和函数进行错误检测
  • STM32 CAN快速配置(HAL库版本)
  • 【文末送书】全栈开发流程——后端连接数据源(二)
  • leetcode_27_最小栈
  • 01-ZooKeeper快速入门
  • [经典面试题]JS的typeof和instanceof区别
  • C++内存区堆和栈
  • QT中闹钟的设置
  • 【Redis】几款redis可视化工具(推荐Another Redis Desktop Manager)
  • 肖sir__设计测试用例方法之因果图07_(黑盒测试)
  • 李宏毅-21-hw3:对11种食物进行分类-CNN