spring data elasticsearch使用7.x客户端兼容es 8.x和使用ssl构建RestHighLevelClient

这篇具有很好参考价值的文章主要介绍了spring data elasticsearch使用7.x客户端兼容es 8.x和使用ssl构建RestHighLevelClient。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题:

es在7.x中默认加入elastic security组件所以java client需要使用ssl连接es server.
es 8.x 中废弃了RestHighLevelClient,使用新版的java api client,但是spring data elasticsearch还未更新到该版本.所以需要兼容es 8.x

RestHighLevelClient构建代码:

如下是RestHighLevelClient构建方法:
spring data elasticsearch客户端依赖(基于spring boot2.7使用最新依赖库):

	 <!-- es依赖-->
	 <dependency>
	     <groupId>org.springframework.data</groupId>
	     <artifactId>spring-data-elasticsearch</artifactId>
	     <version>4.4.2</version>
	 </dependency>
@Configuration
public class EsTemplateConfiguration extends AbstractElasticsearchConfiguration {

    @SneakyThrows
    @Override
    @Bean
    public RestHighLevelClient elasticsearchClient() {

        HttpHeaders compatibilityHeaders = new HttpHeaders();
        // 让es 8.x使用兼容模式 兼容7.x客户端
        compatibilityHeaders.add("Accept", "application/vnd.elasticsearch+json;compatible-with=7");
        compatibilityHeaders.add("Content-Type", "application/vnd.elasticsearch+json;"
                + "compatible-with=7");
		//添加ssl
		// http_ca.crt需要从es server下的config/certs中拷贝到代码的resource目录下
        ClassPathResource classPathResource = new ClassPathResource("http_ca.crt");
        CertificateFactory factory =
                CertificateFactory.getInstance("X.509");
        Certificate trustedCa;
        try (InputStream is = classPathResource.getInputStream()) {
            trustedCa = factory.generateCertificate(is);
        }
        KeyStore trustStore = KeyStore.getInstance("pkcs12");
        trustStore.load(null, null);
        trustStore.setCertificateEntry("ca", trustedCa);
        SSLContextBuilder sslContextBuilder = SSLContexts.custom()
                .loadTrustMaterial(trustStore, null);
        SSLContext sslContext = sslContextBuilder.build();

        ClientConfiguration clientConfiguration = ClientConfiguration.builder()
        		// 你的es server地址及端口
                .connectedTo("localhost:9200")
                // 使用ssl连接
                .usingSsl(sslContext)
                .withConnectTimeout(Duration.ofSeconds(5))
                .withSocketTimeout(Duration.ofSeconds(3))
                .withBasicAuth("用户名", "密码")
                // this variant for imperative code
                // 添加兼容头
                .withDefaultHeaders(compatibilityHeaders)
                .build();
        return RestClients.create(clientConfiguration).rest();
    }
}

然后你就可以在其他bean中注入该客户端文章来源地址https://www.toymoban.com/news/detail-549944.html

    @Autowired
    private ElasticsearchOperations elasticsearchOperations;

到了这里,关于spring data elasticsearch使用7.x客户端兼容es 8.x和使用ssl构建RestHighLevelClient的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • es(Elasticsearch)客户端Elasticsearch-head安装使用(04Elasticsearch-head安装篇)

    elasticsearch-head是一款专门针对于elasticsearch的客户端工具,用来展示数据。elasticsearch-head是基于JavaScript语言编写的,可以使用npm部署,npm是Nodejs下的包管理器 安裝方式利用npm和nodejs进行安装启动,github中给出的安装方法也是这种,本文就是以这种方式进行解说 es(Elasticsearc

    2024年01月17日
    浏览(47)
  • 使用Spring Boot和Apache HttpClient构建REST客户端

    介绍: 在本文中,我们将学习如何使用Spring Boot和Apache HttpClient创建一个REST客户端。我们将探讨如何与远程服务器进行通信、处理JSON响应,并为Web应用程序配置跨源资源共享(CORS)。让我们深入代码吧! ClientService 类负责发起HTTP请求并处理响应。它使用 @Service 注解表示它应

    2024年01月16日
    浏览(48)
  • Java使用Milo实现OPC UA客户端,封装spring boot starter

    最新版本更新日志查看:https://github.com/kangaroo1122/milo-spring-boot-starter/blob/main/UPDATE.md、https://gitee.com/vampire001/milo-spring-boot-starter/blob/master/UPDATE.md,此处不再更新 由eclipse开源,地址:https://github.com/eclipse/milo,可以基于此开发OPC UA客户端或者服务端。 本文介绍基于milo 封装的sp

    2024年02月09日
    浏览(45)
  • 基于.Net开发的ChatGPT客户端,兼容Windows、IOS、安卓、MacOS、Linux

    2023年目前要说最热的点,肯定是ChatGPT了。 ChatGPT官方提供的网页版本,还有需要科*上网,很多人都会基于此进行封装。 现在是移动互联网时代,基于手机APP的需求还是很大的。 所以,今天给大家推荐一个ChatGPT客户端开源项目,兼容苹果和安卓手机、PC。 这是基于C#开发的客

    2023年04月20日
    浏览(44)
  • 大数据:HDFS操作的客户端big data tools和NFS

    2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库 这oracle比sql安全,强大多了,所以你需要学

    2024年02月09日
    浏览(53)
  • Linux Jellyfin 硬解4K HEVC HDR报错,“该客户端与媒体不兼容,服务器未发送兼容的媒体格式”

    关闭色调映射。视频可以正常播放,缺点:视频色彩异常 安装对应显卡的OpenCL运行库,显示正常 inter显卡安装:intel-opencl-icd,linux命令:apt-get install intel-opencl-icd NVIDIA显卡安装:nvidia-opencl-icd,命令:apt-get install nvidia-opencl-icd 重启jellyfin服务器后解决问题 其他平台自行搜索安

    2024年02月11日
    浏览(76)
  • Elasticsearch--客户端

    语言无关 ​  java最常用的客户端是Java Client、Java Rest Client、Java Transport Client 从es7.17开始,官方推出Java Client,并且将Java Rest Client标为Deprecated(过期) 要求jdk至少要jdk8 具体用法再看===》  Java Rest Client分为: Java Low level Rest Client Java High level Rest Client 在es7.15的时候过期的 R

    2024年02月16日
    浏览(43)
  • 【ElasticSearch】使用 Java 客户端 RestClient 实现对文档的查询操作,以及对搜索结果的排序、分页、高亮处理

    在 Elasticsearch 中,通过 RestAPI 进行 DSL 查询语句的构建通常是通过 HighLevelRestClient 中的 resource() 方法来实现的。该方法包含了查询、排序、分页、高亮等所有功能,为构建复杂的查询提供了便捷的接口。 RestAPI 中构建查询条件的核心部分是由一个名为 QueryBuilders 的工具类提供

    2024年01月16日
    浏览(58)
  • SpringBoot中使用Spring integration加Eclipse Paho Java Client 实现MQTT客户端

    Spring Integration 是一个开源的集成消息处理框架,它提供了消息传递、消息过滤、消息转换、消息路由等功能,可以用于构建异步、分布式的系统。 Spring-integration-stream是Spring Integration框架的一个组件,用于在不同的系统和应用之间进行消息传递、集成和流处理。 它提供了一套

    2024年02月10日
    浏览(50)
  • 使用Kafka客户端(spring-kafka)的Java API操作Kafka的Topic

    记录 :458 场景 :在Spring Boot微服务集成Kafka客户端spring-kafka-2.8.2操作Kafka的Topic的创建和删除。 版本 :JDK 1.8,Spring Boot 2.6.3,kafka_2.12-2.8.0,spring-kafka-2.8.2。 Kafka安装 :https://blog.csdn.net/zhangbeizhen18/article/details/129071395 1.微服务中 配置Kafka信息 1.1在pom.xml添加依赖 pom.xml文件: 解析

    2024年02月09日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包