【SpringBoot笔记26】SpringBoot框架集成ElasticSearch数据库
这篇文章,主要介绍SpringBoot框架如何集成ElasticSearch数据库。
目录
一、SpringBoot集成ES
1.1、ElasticSearch介绍
1.2、引入ES依赖
1.3、实例化ES对象
1.4、创建测试控制器
一、SpringBoot集成ES
1.1、ElasticSearch介绍
ElasticSearch是一款分布式,基于Restful风格的文档搜索引擎,ES是一款非结构化的文档型数据库,它可以实现海量数据的快速搜索和分析。elasticsearch提供了多种语言的支持,例如:Java、C、Python等等,不同的编程语言要操作ES数据库,那就需要使用不同的编程语言实现一个ES客户端程序,然后通过ES数据库提供的Restful风格的API操作数据库。
ES官方提供了两种Java语言实现的客户端,分别如下所示:
- elasticsearch-rest-client低级客户端:这个客户端实现的功能相当简单,只是提供了ES的一些基本操作。
- elasticsearch-rest-high-level-client高级客户端:高级客户端是基于低级客户端实现的,提供了更加多的功能(实际开发里面也是采用这种客户端比较多)。
下面具体介绍下,SpringBoot框架如何集成ES数据库。
注意:这篇文章采用的ES数据库版本是【7.13.0】,不同版本的数据库,可能会存在不同的差别。
- ES版本是【5.x】之前,是有type类型的概念,一个Index下面可以有多个type类型。
- ES版本是【6.x】时候,规定一个index类型只能够有一个type类型。
- ES版本从【7.x】开始,就已经剔除了type的概念,所以index索引下就是doc文档。
下载地址【Elasticsearch 7.13.0 | Elastic】。
1.2、引入ES依赖
- 如果是使用低级客户端,那就只需要引入【elasticsearch-rest-client】依赖即可。
<!-- 引入 es 低级客户端 rest-client -->
<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId>
</dependency>
- 如果是使用高级客户端,那就需要引入下面几个依赖。
- 【elasticsearch-rest-client】依赖。
- 【elasticsearch】依赖。
- 【elasticsearch-rest-high-level-client】依赖。
<!-- 引入 es 低级客户端 rest-client -->
<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId>
</dependency>
<!-- 引入 elasticsearch 依赖 -->
<dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId>
</dependency>
<!-- 引入 rest-high-level-client 高级客户端依赖 -->
<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>
高级客户端需要引入的依赖:【Dependencies | Java REST Client [7.17] | Elastic】。
注意:引入ES高级客户端,是基于elasticsearch项目开发,并且使用了elasticsearch-rest-client低级客户端,所以需要引入上面三个依赖。
1.3、实例化ES对象
实例化ES对象,就是需要在SpringBoot应用程序启动的时候,注入一个客户端对象存入IOC容器,之后使用的时候,只需要自动装配就可以使用了。
实例化官方步骤:Initialization | Java REST Client [7.17] | Elastic。
package com.spring.boot.demo.config;import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @author ZhuYouBin* @version 1.0.0* @Date: 2022/11/19 22:14* @Description ES客户端配置类*/
@Configuration
public class RestClientConfig {@Bean(name = "highRestClient")public RestHighLevelClient restHighLevelClient() {// 1、创建IP地址对象: 这里就是写ES数据库的IP地址信息,如果有多个ES结点,那就可以写多个IP地址// ES数据库,默认是9200端口HttpHost httpHost = new HttpHost("localhost", 9200, "http");// 2、创建低级客户端对象:RestClientBuilder builder = RestClient.builder(httpHost);// 3、创建 RestHighLevelClient 对象return new RestHighLevelClient(builder);}}
HighRestClient高级客户端,内部会创建一个RestClient低级客户端对象来执行ES请求,RestClient内部会维护一个连接池,并且开启一些线程去执行ES请求,所以,当我们不再使用ES的时候,需要手动调用close()方法关闭这些线程。
1.4、创建测试控制器
package com.spring.boot.demo.controller;import org.elasticsearch.client.IndicesClient;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.io.IOException;/*** @author ZhuYouBin* @version 1.0.0* @Date: 2022/11/19 22:24* @Description ES 测试类*/
@RestController
@RequestMapping("/api/es")
public class TestController {@Autowiredprivate RestHighLevelClient highRestClient;@GetMapping("/createIndex")public String createIndex() throws IOException {// 创建索引请求对象CreateIndexRequest createIndexRequest = new CreateIndexRequest("idx_name_2022");// 获取索引客户端IndicesClient indicesClient = highRestClient.indices();// 执行创建索引的请求CreateIndexResponse response = indicesClient.create(createIndexRequest, RequestOptions.DEFAULT);// 获取响应信息String index = response.index();System.out.println("索引名称: " + index);// 索引是否创建成功boolean acknowledged = response.isAcknowledged();System.out.println("索引是否创建成功: " + acknowledged);return "success.";}}
启动工程,浏览器访问【http://localhost:8080/api/es/createIndex】,结果如下所示:
到此,SpringBoot集成ElasticSearch就成功啦。
综上,这篇文章结束了,主要介绍SpringBoot框架如何集成ElasticSearch数据库。
【SpringBoot笔记26】SpringBoot框架集成ElasticSearch数据库相关推荐
- SpringBoot笔记:SpringBoot2.3集成SpringSession+nginx+redis实现session共享
文章目录 Spring Session介绍 Redis集成 yml配置 依赖添加 redis存值查看 登录服务器查看redis的值 查询所有"spring:session:"开头的 ...
- SpringBoot笔记:SpringBoot集成MinIO分布式文件系统
文章目录 搭建MinIO集群 SpringBoot集成 添加依赖 添加配置 获取MinioClient MinioUtils完整工具类 测试代码 搭建MinIO集群 首先搭建MinIO的分布式集群,集 ...
- SpringBoot笔记:SpringBoot2.3集成Logback日志组件配置
文章目录 Logback简介 简介 日志级别 日志分类 Logback使用 添加依赖 配置Logback Logback参数解释 1.根节点configuration包含属性 2.根节点configu ...
- SpringBoot笔记:SpringBoot集成JWT实战
文章目录 JWT 简介 概念 JWT 的认证流程 优缺点 JWT 消息构成 header playload signature SpringBoot 集成 JWT 实战 maven 依赖 JwtUti ...
- SpringBoot笔记:SpringBoot2.3集成Kafka组件配置
文章目录 说明 Springboot集成Kafka 依赖配置 配置文件yml配置 Producer生产者 Consumer消费者 测试代码 注意事项 说明 本文是接<Kafka学习:CentOS ...
- SpringBoot笔记:SpringBoot集成SpringbootAdmin监控
文章目录 SpringBootAdmin是什么 接入配置 server端配置 client端配置 测试效果 SpringBootAdmin是什么 Spring Boot Admin 是一个管理和监控 ...
- 云炬Android开发笔记 5-5,6Loading框架集成与完善AVLoadingIndicatorView
3.1 第三方框架的效果 [地址]https://github.com/81813780/AVLoadingIndicatorView [说明]在该地址中已经存在怎样使用的步骤: 3.2 集成封装获取 ...
- 【SpringBoot笔记】SpringBoot整合Druid数据连接池
废话少说,按SpringBoot的老套路来. [step1]:添加依赖 <!-- 数据库连接池 --> <dependency><groupId>com.aliba ...
- SpringBoot笔记:SpringBoot启动参数配置
文章目录 目的 测试代码 配置文件配置 获取自定义参数 项目打包发布 修改启动配置 方式一:系统变量 方式二:命令行参数 springboot启动参数解释 目的 1.熟悉springboot多环境配置 ...
最新文章
- 声明式事务--@EnableTransactionManagement || @Transactional
- Enterprise Vault 10.0.4 FOR Exchange2013 部署之二 -安装过程
- “达观杯”文本智能处理挑战赛,季军带你飞
- 数字证书 - Java加密与安全
- Apache 2.0性能优化—MPM的选择与配置
- SqlServer之代码块相关
- spring @lazy_Spring @Lazy批注用例
- [vue] vue生命周期总共有几个阶段?
- DOM 精通了?请问 Node 和 Element 有何区别?
- android无网络状态栏,Android中检查网络连接状态的变化,无网络时跳转到设置界面...
- 查看python数据的属性
- SpringBoot多数据源切换详解,以及开启事务后数据源切换失败处理
- IDEA操作 名字快速驼峰等操作
- 计算机主页为什么打不开怎么办,主页被限制,打不开怎么办?
- 高效记忆/形象记忆(06)英语单词记忆-字母编码
- System V消息队列报Resource temporarily unavailable 错误
- 【环境配置】自定义Linux欢迎界面/etc/motd文件
- face_recognition移植至树莓派
- VC API常用函数简单例子大全(1-89)
- 浅析AVL树--AVL树的双旋转
热门文章
- python应用系统访问瀚高库
- 使用prometheus(普罗米修斯)监控mysql容器详解
- 我为什么想转型管理?——开发者的觉悟
- ap设置 维盟660g_维盟 FBM-580路由器功能参数介绍
- Python的富比较方法__eq__和__ne__之间的关联关系分析
- 最有发展前景的20个创业项目
- 爬虫-requests,微信公众号推送
- 2017.6.27DI/DO测试总结
- 华为鸿蒙os手机入网,首款鸿蒙OS手机入网 华为卖车两天破3000单
- 记一次ThreadLocal在工作上的妙用