spring-data-elasticsearch.4.2.0 jar包冲突导致:StackOverflow

spring boot实现ElasticSearch基本使用 阅读详情

最近要求es做升级改造:

目前版本:
1. springframework   4.3.3-RELEASE
2. spring-data-elasticsearch: 2.0.3
3. elasticsearch: 2.4.0
4. 工具类: ElasticsearchTemplate 

升级后ES版本7.10.0

1. springframework  升级到 5.3.10
2. spring-data-elasticsearch 升级到  4.2.0
3. elasticsearch 升级到  7.10.0
4. 升级Es7后, ElasticsearchTemplate 过期不能使用, 使用ElasticsearchRestTemplate, 修改增删查改语法

因为项目不是spring-boot项目, 是spring项目, 所以:

1. 首先引入jar包:

<!--elasticsearch-->
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-elasticsearch</artifactId>
			<version>4.2.0</version>
		</dependency>

2. 将spring.framework相关的jar包都升级到5.3.10:

<!--spring jar-->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>5.3.10</version>
			<exclusions>
				<!-- Exclude Commons Logging in favor of SLF4j -->
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>5.3.10</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>5.3.10</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>5.3.10</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>5.3.10</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>5.3.10</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>5.3.10</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>5.3.10</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jms</artifactId>
			<version>5.3.10</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-expression</artifactId>
			<version>5.3.10</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>5.3.10</version>
			<scope>test</scope>
		</dependency>
		<!-- spring jar end-->

3. 创建EsConfig配置文件: 

package com.haier.camelot.cdk.base.conf;

import com.alibaba.fastjson.JSONObject;
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.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import springfox.documentation.spring.web.json.Json;

import javax.xml.bind.util.JAXBSource;

@Slf4j
@Configuration
public class EsConfig extends AbstractElasticsearchConfiguration {
    @Value("#{app.esUrl}")
    private String esUrl;
    @Value("#{app.esUrlPort}")
    private int esUrlPort;
    @Value("#{app.esUsername}")
    private String esUsername;
    @Value("#{app.esPwd}")
    private String esPwd;

    private static final String HTTP_SCHEME = "http";


    @Bean
    public RestHighLevelClient elasticsearchClient() {
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        //访问用户名和密码为您创建阿里云Elasticsearch实例时设置的用户名和密码,也是Kibana控制台的登录用户名和密码。
        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(esUsername, esPwd));
        // 设置认证信息:
        // 通过builder创建rest client,配置http client的HttpClientConfigCallback。
        // 单击所创建的Elasticsearch实例ID,在基本信息页面获取公网地址,即为ES集群地址。
        RestClientBuilder builder = RestClient.builder(new HttpHost(esUrl, esUrlPort, HTTP_SCHEME))
                .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
                    @Override
                    public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                        return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                    }
                });
        RestHighLevelClient client = new RestHighLevelClient(builder);
        return client;
    }

    //获取ElasticsearchRestTemplate模板对象, 后面增删查改都是通过ElasticsearchRestTemplate 
    @Bean
    public ElasticsearchRestTemplate elasticsearchRestTemplate(){
        RestHighLevelClient client = elasticsearchClient();
        return new ElasticsearchRestTemplate(client);
    }


}

4. 改造增删查改方法: 以下简单列出

@Test
    public void saveTest(){
        WdRefusedOrderInfoToEs insert = new WdRefusedOrderInfoToEs();
        insert.setId("111");
        insert.setOrderId("A002");
        WdRefusedOrderInfoToEs s = elasticsearchRestTemplate.save(insert);
        System.out.println(s);
    }

    @Test
    public void deleteTest(){
        WdRefusedOrderInfoToEs inset = new WdRefusedOrderInfoToEs();
        inset.setId("111");
        inset.setOrderId("A001");
        //WdRefusedOrderInfoToEs save = elasticsearchRestTemplate.save(inset);
        String delete = elasticsearchRestTemplate.delete(inset);
        System.out.println(delete);
    }

    @Test
    public void updateTest(){
        WdRefusedOrderInfoToEs update = new WdRefusedOrderInfoToEs();
        update.setId("OYADI21030900002-0802ebc5");
        update.setCreatedBy("JYB");
        //创建文档对象
        Document document = Document.create();
        document.put("createdBy", update.getCreatedBy());
        //创建更新查询
        UpdateQuery updateQuery = UpdateQuery.builder(update.getId()).withDocument(document) .withScriptedUpsert(true) .build();
        UpdateResponse up = elasticsearchRestTemplate.update(updateQuery, IndexCoordinates.of("doc_name"));
        System.out.println(up);
    }  

以上删除, 更新都正常, 但是save方法一直失败, 报错像是跟jackson有关的无线递归循环:  StackOverflow

浪费了好几天没看出问题, 后来找了架构组的同事, 一眼看出是jackson相关jar包缺失, 

到spring-data-elasticsearch.4.2.0的.m2下找到pom文件, 分析了一下该包的依赖:

C:\Users\Haier\.m2\repository\org\springframework\data\spring-data-elasticsearch\4.2.0>mvn dependency:tree

分析因为的jackson相关包,  发现我们的项目里jackson-databind版本引入是2.12.3,  而因为引用的parent里面写死的版本是2.3.2, 导致版本不匹配, 所以显示在pom里引入一下, 覆盖点以前的版本

<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-databind</artifactId>
   <version>2.12.3</version>
</dependency>

save也成功了!

不只是烧录:深入理解英飞凌Aurix MCU的HSM安全模块与UDE Memtool解锁操作 本文深入探讨了英飞凌Aurix MCU的HSM安全模块设计与UDE Memtool解锁操作,揭示了硬件安全模块的架构、安全启动链机制及调试接口的安全特性。通过分析UDE Memtool的解锁逻辑和量产环境下的最佳实践,帮助工程师更好地应对MCU锁定问题,提升汽车电子和工业控制领域的安全烧录效率。 阅读详情

相关推荐

映泰TB250-BTC主板魔改BIOS支持8/9代CPU实战与开机故障排查

BIOS(基本输入输出系统)是计算机硬件与操作系统之间的桥梁,负责初始化硬件和提供运行时服务。其工作原理是通过存储在主板芯片中的固件程序,在上电自检(POST)阶段完成对CPU、内存等关键组件的检测与配置。魔改BIOS的技术价值在于突破硬件限制,通过修改微码和电源管理模块,让旧平台支持新处理器,从而以极低成本实现性能跃升,在预算有限或追求极致性价比的DIY、办公和软路由等应用场景中极具吸引力。本文以映泰TB250-BTC矿板为例,详细解析了通过软刷方式刷入魔改BIOS,并重点解决了刷写后常见的“开机风扇转一

weixin_29164185的博客 405

elasticsearch java jar包_elasticsearch jar包下载

elasticsearch.jar包是一款在java开发的过程中会用到的十分重要的elasticsearch.jar架包,如果您的架包库中缺少了这款jar包,开发过程中可能会频繁出现报错的情况,欢迎有需要的朋友们前来下载使用。基本简介JAR 文件就是 Java Archive File,顾名思意,它的应用是与 Java 息息相关的,是 Java 的一种文档格式。JAR 文件非常类似 ZIP 文件—...

weixin_39625709的博客 1784

从零构建:openEuler WSL下的ARM交叉编译工具链自动化部署方案

本文详细介绍了在openEuler WSL环境下使用Ansible自动化部署ARM交叉编译工具链的方案。通过编写Ansible角色和Playbook,实现从基础环境配置到工具链安装、环境变量设置的一键部署,大幅提升嵌入式开发效率。方案支持多种ARM架构,并扩展了QEMU仿真、VS Code远程开发等实用功能,是嵌入式开发者的高效解决方案。

h3i4j的博客 382

spring data elasticsearch:从零搭建springboot整合spring data elasticsearch3.x环境

spring-data系列为众多中间件、数据库的操作提供了极其方便的API,对于elasticsearch也不例外,spring-data-elasticsearch不仅为我们提供了现成的CRUD接口,也提供了简便的各类java client的整合方案所以今天我们就来讲解,如果在springboot项目中整合spring-data-elasticsearch在真正开始搭建之前,我们需要了解我们的运行环境,以防止大家因为环境的问题产生出各类不易排查的错误或冲突首先要知道spring,spring-data-e

55555的博客 3924

AR Tag 与 ROS:从基础部署到机器人视觉定位实战

本文详细介绍了AR Tag技术在ROS环境下的部署与应用,涵盖从基础原理到机器人视觉定位的实战技巧。通过分析AR Tag的特征提取、位姿解算等核心技术,结合ROS工具包`ar_track_alvar`的配置优化,帮助开发者实现高精度的视觉定位系统。文章还分享了深度相机配置、坐标转换及性能优化等实用经验,适用于仓储机器人、物流分拣等场景。

weixin_33146151的博客 180

【fNIRS可视化学习1】基于NIRS-SPM进行光极可视化并计算通道坐标

设头皮上的目标点为P₀(x₀, y₀, z₀),需要在大脑皮层点集S上找到最合适的投影点P'。

Rose9614的博客 2208

SpringBoot所管理的依赖和需要的依赖冲突解决方案

查看后发现当前项目里面不仅有我引入的 es 7.9.3 版本的jar 还有springboot 2…7.7 所默认加入7.13.1版jar,最初我的pom是这样的。在使用springboot2.7.7 集成 elasticsearch7.9.3时 启动报错。

weixin_45996580的博客 1397

保姆级教程:在Ubuntu 22.04上用Python3.10和pysoem搞定EtherCAT电机回零与位置控制

本文提供在Ubuntu 22.04上使用Python3.10和pysoem实现EtherCAT电机回零与位置控制的详细指南。涵盖环境搭建、权限配置、EtherCAT主站架构解析、CiA402协议核心机制及工业级精度控制实现,帮助开发者快速掌握Python在工业自动化中的应用。

weixin_30952535的博客 329

springboot依赖冲突问题(完全解决)

springboot依赖冲突问题(完全解决)

2301_78960337的博客 5105

提示词注入攻击全面解析与防御策略

提示词注入(Prompt Injection)是指攻击者通过精心构造的输入内容,操纵或欺骗AI系统执行非预期行为的技术手段。这种攻击类似于传统的SQL注入或XSS攻击,但其目标是AI模型的提示词处理机制而非数据库或网页。提示词注入利用了大语言模型的一个基本特性:它们被设计为遵循指令。攻击者通过在用户输入中嵌入特定指令,试图覆盖或绕过系统原有的安全限制和行为规则,让模型执行本不应该执行的操作。深度防御:实施多层次防御策略,不依赖单一安全措施持续更新:随着攻击技术的发展不断更新防御措施安全设计优先。

免责声明:本资料部分整理自合法网络公开渠道,部分为个人学习积累成果,仅作学习参考、学术交流使用。所收费用仅为资料搜集整理的时间劳务酬劳。版权归原作者及出版方所有,本人不承担相关版权及内容法律责任,若有侵权请告知,即刻删除处理。 4206

目标检测旋转增强源码带方向

解法1: import cv2 import math import numpy as np import os def get_degree(p1,p0): aaa = math.degrees(math.atan2((p1[1] - p0[1]), (p1[0] - p0[0]))) if aaa < 0: aaa = 360 + aaa aaa = (aaa + 90) if aaa > 360: aa...

jacke121的专栏 2083

springboot引入elasticsearch依赖冲突问题记录

背景:项目要同时引入 <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> &

qq_40435436的博客 4000

1、Ka频段双极化低剖面卫通相控阵天线

设计了双馈口叠层十字缝隙耦合天线,采用“双线极化天线 +旋转馈电 + 移相控制”架构,采用双馈口的叠层十字缝隙耦合天线,并以 2 x2 阵列为主体,旋转排布实现二次圆极化,同时极化可切换,通过多层 PCB 工艺实现天线层、控制/电源层功分网终层、芯片层一体化集成,研制出 64 阵元的圆极化可切换发射天线,测试结果表明:天线工作 频段为 27.5 ~31 GHz,可实现60°扫描,法向轴比

qq_43416206的博客 4366

spring data elasticsearch:从零搭建springboot整合spring data elasticsearch4.2.x环境

我们之间讲解了springboot整合spring data elasticsearch3.x。但elasticsearch的更新十分活跃,截止目前已经到了8.x版本。而spring data elasticsearch3.x所对应的es版本还是6.8.x所以今天我们来讲解与spring-data-elasticsearch3.x有较大变化的spring data elasticsearch4.2.x版本如何整合到springboot一些基础的概念性内容本文就不再重复讲解,不了解的可以查看之前的文章spri

55555的博客 2395

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ElasticSearch Java整合

springboot整合ElasticSearch

weixin_58691039的博客 1039

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

ElasticSearch在Java中引用jar包--pom文件

ElasticSearch在Java中引用jar包--pom文件 适用范围ElasticSearch6.x 如果是ElasticSearch7或以上版本情转到如下链接 REST高级客户端-DocumentApi:https://blog.csdn.net/u014646662/article/details/96473156 REST高级客户端SearchApi:https://blog....

周天祥的博客 2万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java整合ElasticSearch8.13

整合ES

galaxyou的博客 1667

Elastic实战:彻底解决spring-data-elasticsearch日期、时间类型数据读取报错问题

0. 引言 在使用spring-data-elasticsearch读取es中时间类型的数据时出现了日期转换报错,不少初学者会在这里困惑很久,所以今天我们专门来解读该问题的几种解决方案。 1. 问题分析 该问题的报错形式一般是: Failed to convert from type [java.lang.String] to type [java.util.Date] for value '2022-03-15T14:31:55+08:00'; nested exception is java.lang

55555的博客 7636

SpringBoot整合ElasticSearch导包出现的问题

由于网络原因SpringBoot项目无法导入ElasticSearch依赖 这个是正常的导包依赖,如果网络没问题,那么应该一路顺畅导入成功 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> 我出现的情况就是里面有一

PY_Warren的博客 1843

Springboot整合elasticsearch

这篇文章介绍了elasticsearch安装和使用。

普通还不自信的程序员 4496

SpringBoot集成Elasticsearch7.x和对应版本不一致异常信息处理

开源框架springboot框架中集成es。使用org.springframework.data.elasticsearch下的依赖,实现对elasticsearch的CURD,非常方便,但是springboot和elasticsearch版本对应很严格,对应版本不统一启动会报错。文章目录开源框架Elasticsearch 7.x安装Elasticsearch和springboot版本对应配置el...

Java精选 1013

elasticsearch-java客户端jar包中各模块的应用梳理

在 Elasticsearch 中,悬空索引(Dangling Index)是一种特殊的索引状态。它主要是指在集群状态更新过程中,索引的元数据在集群状态中被标记为已删除,但索引的实际数据(如分片)仍然存在于节点的存储中。这种情况可能会导致一些问题,例如占用磁盘空间,并且可能会干扰集群的正常操作。

fanshukui的专栏 1906

SpringBoot整合新版本Elasticsearch4.2.x

SpringBoot整合新版本Elasticsearch概述整合SpringBoot环境yaml配置测试配置实体类(非必须,配置了使用更方便)使用 ElasticsearchRestTemplate 与ES交互介于API太多,剩下的项目中碰到实际需求再看..... 概述 最近重新看了下ES以及Spring Data Es 的东西,发现变动不小,而且网上东西大多抄来抄去,都是以前的API,新版本变动较大;谨以本文列出基本使用,由于API众多,只能是抛砖引玉。 整合SpringBoot 环境 es版本:7.1

冰糖的博客 663

elasticsearch客户端java包选型

问题ES的java客户端有多个 实际开发时不知道怎么选型 网上搜索了下 找到了一个不错的建议 quora问题 https://www.quora.com/What-is-the-best-client-library-for-elasticsearch 1. Jest - REST based client library - Jest 2. spring data library - sp

one-programmer 3572

SpringBoot集成ElasticSearch

需要注意的是,这段代码中的 RestHighLevelClient 实例是一个单例对象,只需要在应用程序启动时创建一次即可,因此这个类应该被配置为一个 Spring Bean,以便在需要时注入到其他类中使用。其中 RestHighLevelClient 是 Elasticsearch Java 客户端的高级别别名,是基于 LowLevelClient 之上的封装,提供了一些更加方便的方法和功能。第一步,导入jar包,注意这里的jar包版本可能和你导入的不一致,所以需要修改。第四步,编写util类。

欢迎来到我的博客 702

XContentBuilder如何拼接es查询语句(多条件模糊查询分页,时间查询)

使用XContentBuilder拼接查询条件时,注意有开始就要有结尾 Object类型 //object对象,对应的json中的object xContentBuilder.startObject(); xContentBuilder.endObject(); //例如{"name":{}} xContentBuilder.startObject(); xContentBuilder.startObject("name"); xContentBuilder.endObject(); xConten

qq_39187822的博客 4044
上一篇: Oracle的number类型与java数据类型的转换
下一篇: shiro-all由1.3.2 升级到1.11.0后出现重定向次数过多的问题:ERR_TOO_MANY_REDIRECTS
雨冰
博客等级 码龄15年 18粉丝 60原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值