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

谷粒商城项目125-spring整合high-level-client

新年快乐! 致2025年还在努力学习的你!
你已经很努力了,今晚就让自己好好休息一晚吧!

在后端中选用哪种elasticsearch客户端?

elasticsearch可以通过9200或者9300端口进行操作

1)9300:TCP

  • spring-data-elasticsearch:transport-api.jar

    • springboot版本不同,transport-api.jar不同,不能适配es版本

    • 7.x已经不建议使用,8以后就要废弃

2)9200:HTTP

  • JestClient:非官方,更新慢

  • RestTemplate:模拟发HTTP请求,ES很多操作需要自己封装,麻烦

  • HttpClient:同上

  • high-level-client:官方(推荐)

综上,使用官方推荐的high-level-client。

以下为在idea中配置high-level-client的详细操作步骤:

①:在gulimall模块下创建子模块gulimall-search
image-20241231204030501

image-20241230213435632

gulimall父模块的pom下添加gulimall-search作为子模块

image-20241230213602531

②导入相关依赖

<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.13.0</version>
</dependency>

刷新依赖,可以发现其中的elasticsearch依赖和elasticsearch-rest-client依赖的版本是7.15.2

image-20241231204806030

elasticsearch和elasticsearch-rest-client这两个依赖是elasticsearch-rest-high-level-client的传递依赖,就是说elasticsearch-rest-high-level-client依赖着elasticsearch和elasticsearch-rest-client这两个依赖。

我们点开elasticsearch-rest-high-level-client-7.13.0.pom,可以看到elasticsearchelasticsearch-rest-client这两个依赖的版本是7.13.0

image-20241231205324014

那么为什么项目实际引入的版本实际是7.15.2

原因在于该项目pom文件下的的内容

image-20241231232127568

查看spring-boot-dependencies-2.6.13.pom下的内容

image-20241231232250320

可以看到spring-boot-dependencies-2.6.13.pom中也指定了elasticsearch的版本,并且版本号为7.15.2,是不是和前面实际引入的版本号对应上了~

至于为什么dependencyManager会影响到elasticsearch-rest-high-level-client的传递依赖版本,具体可以参考博客:maven的dependencyManagement中定义的依赖声明优先级高于传递依赖

总之结论就是:maven的dependencyManagement中定义的依赖声明优先级高于传递依赖。

所以,我们把elasticsearch-rest-high-level-client里面的两个依赖,elasticsearchelasticsearch-rest-client`排除,然后显示导入这两个依赖,如下

		<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.13.0</version><exclusions><exclusion><artifactId>elasticsearch</artifactId><groupId>org.elasticsearch</groupId></exclusion><exclusion><artifactId>elasticsearch-rest-client</artifactId><groupId>org.elasticsearch.client</groupId></exclusion></exclusions></dependency><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.13.0</version></dependency><dependency><artifactId>elasticsearch-rest-client</artifactId><groupId>org.elasticsearch.client</groupId><version>7.13.0</version></dependency>

③编写配置类

image-20241231233858360

配置类编写如下:

@Configuration
public class GulimallElasticSearchConfig {@Beanpublic RestHighLevelClient client() {RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.206.134", 9200, "http")));return client;}
}

④单元测试

image-20241231234137583

@SpringBootTest
class GulimallSearchApplicationTests {@Autowiredprivate RestHighLevelClient client;@Testvoid contextLoads() {System.out.println(client);}
}

输出结果如下:

image-20241231234227698

说明配置成功!

ps:这里没有引入common模块,因为我在引入入common模块后出现了could not find class [org.springframework.cloud.client.loadbalancer.reactive.onnoribbondefaultcondition]报错,所以我暂时忽略common依赖的引入。如果需要引入common依赖,在运行测试类的时候会出现无法找到数据源的错误,需要在如下启动类上添加exclude = DataSourceAutoConfiguration.class.由于配置了mybatis等与数据库相关的类,spring boot在启动时会自动加载数据源,具体可以参考我写的博客:报错:Failed to determine a suitable driver class 让spring boot项目启动时不连接数据库

image-20241231234408820

http://www.lryc.cn/news/513961.html

相关文章:

  • 日期时间选择(设置禁用状态)
  • 基于SpringBoot的题库管理系统的设计与实现(源码+SQL+LW+部署讲解)
  • 钉钉h5微应用安卓报错error29 ios报错error3 加上报错52013,签名校验失败 (前端)
  • Vue.js组件开发-客户端如何限制刷新Token次数
  • Linux上安装jdk
  • Ardunio BLE keyboard 库的使用
  • django --递归查询评论
  • 【开源免费】基于SpringBoot+Vue.JS音乐网站(JAVA毕业设计)
  • SUBSTRING_INDEX()在MySQL中的用法
  • 对45家“AI+安全”产品/方案的分析
  • Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(1):Oracle Dataguard 概述
  • Pycharm 中 virtualenv、pipenv、conda 虚拟环境的用法
  • UNI-APP弹窗
  • 【大模型实战篇】LLaMA Factory微调ChatGLM-4-9B模型
  • 【Cesium】三、实现开场动画效果
  • #渗透测试#红蓝攻防#红队打点web服务突破口总结01
  • 适用于项目经理的跨团队协作实践:Atlassian Jira与Confluence集成
  • 智能家居体验大变革 博联 AI 方案让智能不再繁琐
  • 云计算与服务是什么
  • 接口测试面试题
  • 【Cesium】六、实现鹰眼地图(三维)与主图联动效果
  • ESLint+Prettier的配置
  • 4.微服务灰度发布落地实践(消息队列增强)
  • 【从零开始入门unity游戏开发之——C#篇35】C#自定义类实现Sort自定义排序
  • 音频进阶学习九——离散时间傅里叶变换DTFT
  • 连接github和ai的桥梁:GitIngest
  • Pytorch使用手册-DCGAN 指南(专题十四)
  • Flume的安装和使用
  • [Hive]七 Hive 内核
  • Druid密码错误重试导致数据库超慢