【开发篇】九、SpringBoot整合ES(ElasticSearch)

文章目录

  • 1、整合
  • 2、简单示例
  • 3、一点补充
  • 4、增删改查索引与文档

1、整合

整合思路都一样,先起步依赖或普通依赖,再配置,再封装的操作对象。先引入依赖:

<dependency>   <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

application.yaml配置:

spring:  elasticsearch:    rest:      uris: http://localhost:9200

在需要的地方注入客户端操作对象:

@Autowired
ElasticsearchRestTemplate template;

注意,与以往不同的是,SpringBoot平台并没有跟随ES的更新速度进行同步更新,ES提供了High Level Client操作ES,导入坐标:

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

不用加配置,上面的starter搭配的那个配置也可以注释掉了,使用es-high-level-client,ES的信息写在代码中,不写在配置文件中,因为没和SpringBoot整合还。

2、简单示例

既然es-high-level-client还没和Spring做整合,那自然不能使用@Autowired自动注入一个客户端操作对象了。RestHighLevelClient对象需要我们自己来手动创建,并初始化。且之前对象做为Bean交给Spring管理时,我们只管用,现在手搓的RestHighLevelClient用完需要关闭资源连接。在UT中看下效果,以创建索引为例:

@Test
void test() throws IOException {HttpHost host = HttpHost.create("http://localhost:9200");   RestClientBuilder builder = RestClient.builder(host);   RestHighLevelClient client = new RestHighLevelClient(builder); //客户端操作    CreateIndexRequest request = new CreateIndexRequest("books");   //获取操作索引的客户端对象,调用创建索引操作    client.indices().create(request, RequestOptions.DEFAULT); //关闭客户端    client.close();
}

创建客户端连接对象和关闭连接是重复操作,使用SetUp和TearDown方法来改进下:

在这里插入图片描述

SetUp和TearDown分别代表每个测试用例@Test执行前和执行后进行的操作。

@SpringBootTest
class Springboot18EsApplicationTests {private RestHighLevelClient client; @BeforeEach    void setUp() {       this.client = new RestHighLevelClient(RestClient.builder(HttpHost.create("http://localhost:9200")));    }   @AfterEach    void tearDown() throws IOException {        this.client.close();    }}

此时,直接写CRUD代码就行。

@Test
void test() throws IOException {    //客户端操作    CreateIndexRequest request = new CreateIndexRequest("books");    //获取操作索引的客户端对象,调用创建索引操作    client.indices().create(request, RequestOptions.DEFAULT);
}

3、一点补充

高版本的SpringBoot好像已经完成了整合,可以直接注入RestHighLevelClient这个对象(测试版本SpringBoot 2.6.13)

@Autowired
private RestHighLevelClient restHighLevelClient;

在Ioc容器中获取一下,是可以拿到这个Bean的,且其加载了application.yaml中的es配置:

spring:  elasticsearch:    rest:      uris: http://localhost:9200 # 默认就是这个uri,写不写都行

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

不确定,没查文档,实际开发时自己看吧,注入不成功就@Bean自己创建一个。

4、增删改查索引与文档

之前专栏已经整理完了,跳转【ES专栏】

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/89006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java的电影评论网站设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于Java的电影评论网站…

内存泄漏,内存溢出,抽象类和接口,netstat、ping、ifconfig的区别

持续学习是我们必备的技能之一&#xff0c;保持与时俱进&#xff0c;保持行业的敏感度&#xff0c;关注行业发展趋势&#xff0c;了解新技术&#xff0c;加强自己的认知&#xff0c;积极的应对变化 内存泄漏 memory leak 是指程序在申请内存后&#xff0c;无法释放已申请的内…

Oracle去重去空

1. -- 去重函数 DISTINCT SELECT DISTINCT E.JOB FROM EMP E -- 只能放在 SELECT 后面,或 函数的括号里面 2. -- 分组去重 SELECT E.JOB FROM EMP E GROUP BY E.JOB -- 去空值 NVL (字段,默认值) -- 空值特性: 1. 空值和任何值进行算术运算都为空 2. 空值跟任何进行…

Linux centos7压缩包安装mysql-8.0.34 并设置开机自启

下载安装解包 并解压 wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.34-linux-glibc2.12-x86_64.tar.xztar -xf mysql-8.0.34-linux-glibc2.12-x86_64.tar.xzmv mysql-8.0.34-linux-glibc2.12-x86_64 /usr/local/mysql初始化数据及安装操作 配置mysql配置文…

IntelliJ IDEA - Maven 在控制台Maven编译正常,但是在IDEA中不正常,表现不一致

文章目录 现象原因解决验证 现象 一个Maven项目&#xff0c;当导入到IDEA后&#xff0c;无法在IDEA中正常的编译和下载jar依赖&#xff0c;类似下面的截图。 但是在Windows控制台却可以正常编译&#xff0c;类似下面的截图。 CMD执行&#xff1a;mvn clean install -Dmaven.te…

水库河道生态流量监测系统的主要内容

一、系统背景 我国为保护河流生态环境&#xff0c;推动水资源科学、合理、有序开发和可持续利用&#xff0c;各地水利和环保部门相继出台措施对不满足生态流量下泄要求的水电站责令整改或挂牌督办。近几年几百家水库在各个主要流域建成&#xff0c;由于缺乏对各个水库生态下泄流…

蓝牙核心规范(V5.4)11.5-LE Audio 笔记之Context Type

专栏汇总网址:蓝牙篇之蓝牙核心规范学习笔记(V5.4)汇总_蓝牙核心规范中文版_心跳包的博客-CSDN博客 爬虫网站无德,任何非CSDN看到的这篇文章都是盗版网站,你也看不全。认准原始网址。!!! 蓝牙中的上下文类型(Context Type)是用于描述音频流当前使用情况或相关使用情…

【Java】集合 之 使用List

在集合类中&#xff0c;List是最基础的一种集合&#xff1a;它是一种有序列表。 List的行为和数组几乎完全相同&#xff1a;List内部按照放入元素的先后顺序存放&#xff0c;每个元素都可以通过索引确定自己的位置&#xff0c;List的索引和数组一样&#xff0c;从0开始。 数组…

为什么说软文能够扩大中小企业的品牌影响力?

在当今的商业环境中&#xff0c;品牌影响力对于企业的成功至关重要。对于中小企业来说&#xff0c;利用软文来打造品牌影响力是一种成本低且效果更高的方式。为什么说软文能够扩大中小企业的品牌影响力呢&#xff1f;下面就让媒介盒子告诉你。 一、塑造品牌形象 首先&#xff…

走心分享!天津诚筑说Java大数据培训我该如何选择?

随着互联网的发展&#xff0c;IT行业变得越来越炙手可热&#xff0c;其中较为火热的当属大数据和Java了&#xff0c;许多学员都很纠结&#xff0c;Java和大数据我应该如何选择呢?今天小编带大家了解一下Java和大数据之间的区别&#xff01; Java和大数据的关系 Java是一种面…

Verilog中什么是断言?

断言就是在我们的程序中插入一句代码&#xff0c;这句代码只有仿真的时候才会生效&#xff0c;这段代码的作用是帮助我们判断某个条件是否满足&#xff08;例如某个数据是否超出了范围&#xff09;&#xff0c;如果条件不满足&#xff08;数据超出了范围&#xff09;&#xff0…

搭建安信可小安派Windows 开发环境

搭建小安派Windows 开发环境 Ai-Pi-Eyes 系列是安信可开源团队专门为Ai-M61-32S设计的开发板&#xff0c;支持WiFi6、BLE5.3。所搭载的Ai-M61-32S 模组具有丰富的外设接口&#xff0c;具体包括 DVP、MJPEG、Dispaly、AudioCodec、USB2.0、SDU、以太网 (EMAC)、SD/MMC(SDH)、SP…

Mojo:新AI语言中的7个惊人的Python升级

一、说明 AI发展是日新月异的&#xff0c;对于新模型的产生&#xff0c;我们不能不给以关注。Mojo就是一种新发布的编程语言&#xff0c;专为AI开发人员制作&#xff0c;由Modular制作&#xff0c;Modular是一家由Swift的原始创建者Chris Lattner创立的公司。 二、关于MOJO的概…

人生第一个项目(学生管理系统)(进阶版)

题目: package Project.Student_system_upper版;public class 题目学生股那里系统upper {//增删改查可以直接参照之前的文件代码(cv大法)/* 为学生管理系统写一个登录,注册,忘记密码的功能只有用户登陆成功之后,才能进入到学生管理系统中进行相应操作*//*分析:1. 登陆界面需要…

notepad编辑器的使用

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言 前言 认知有限&#xff0c;望大家多多包涵&#xff0c;有什么问题也希望能够与大家多交流&#xff0c;共同成长&#xff01;…

vue实现移动端悬浮可拖拽按钮

需求&#xff1a; 按钮在页面侧边悬浮显示&#xff1b;点击按钮可展开多个快捷方式按钮&#xff0c;从下向上展开。长按按钮&#xff0c;则允许拖拽来改变按钮位置&#xff0c;按钮为非展开状态&#xff1b;按钮移动结束&#xff0c;手指松开&#xff0c;计算距离左右两侧距离…

forEach中return会退出循环吗 (改)

原文地址如下&#xff0c;有需要的朋友可以关注 forEach中return会退出循环吗 &#xff08;改&#xff09; (qq.com) forEach循环 在JavaScript中的forEach循环中使用return语句,并不会退出或终止循环,forEach循环会继续执行完剩余的所有迭代。 forEach循环中的return语句只…

使用Docker快速搭建基础服务

Docker安装 #Linux安装 curl -fsSL get.docker.com -o get-docker.sh sudo sh get-docker.sh --mirror Aliyun #启动docker服务 systemctl start docker #将docker添加到开机自启动 sudo systemctl enable docker #查看是否成功安装 docker infoMysql安装 #拉取镜像 docker p…

uniapp使用scroll-into-view实现锚点定位和滚动监听功能【楼层效果 / 侧边导航联动效果】

大佬网址&#xff1a; https://blog.csdn.net/weixin_47136265/article/details/132303570 效果 代码 <template><view class"main"><scroll-view scroll-y"true" class"left-content"><view class"left-item"…

目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)

文章目录 一、演示多分类效果二、PaddleClas介绍三、代码获取四、数据集获取五、环境搭建六、数据格式分析七、模型训练7.1 模型恢复训练7.2 多卡训练7.3 其他训练指标 八、模型预测九、模型评估十、PaddleClas相关博客 一、演示多分类效果 二、PaddleClas介绍 PaddleClas主要…