这篇文章,主要介绍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数据库相关推荐

  1. SpringBoot笔记:SpringBoot2.3集成SpringSession+nginx+redis实现session共享

    文章目录 Spring Session介绍 Redis集成 yml配置 依赖添加 redis存值查看 登录服务器查看redis的值 查询所有"spring:session:"开头的 ...

  2. SpringBoot笔记:SpringBoot集成MinIO分布式文件系统

    文章目录 搭建MinIO集群 SpringBoot集成 添加依赖 添加配置 获取MinioClient MinioUtils完整工具类 测试代码 搭建MinIO集群 首先搭建MinIO的分布式集群,集 ...

  3. SpringBoot笔记:SpringBoot2.3集成Logback日志组件配置

    文章目录 Logback简介 简介 日志级别 日志分类 Logback使用 添加依赖 配置Logback Logback参数解释 1.根节点configuration包含属性 2.根节点configu ...

  4. SpringBoot笔记:SpringBoot集成JWT实战

    文章目录 JWT 简介 概念 JWT 的认证流程 优缺点 JWT 消息构成 header playload signature SpringBoot 集成 JWT 实战 maven 依赖 JwtUti ...

  5. SpringBoot笔记:SpringBoot2.3集成Kafka组件配置

    文章目录 说明 Springboot集成Kafka 依赖配置 配置文件yml配置 Producer生产者 Consumer消费者 测试代码 注意事项 说明 本文是接<Kafka学习:CentOS ...

  6. SpringBoot笔记:SpringBoot集成SpringbootAdmin监控

    文章目录 SpringBootAdmin是什么 接入配置 server端配置 client端配置 测试效果 SpringBootAdmin是什么 Spring Boot Admin 是一个管理和监控 ...

  7. 云炬Android开发笔记 5-5,6Loading框架集成与完善AVLoadingIndicatorView

    3.1 第三方框架的效果 [地址]https://github.com/81813780/AVLoadingIndicatorView [说明]在该地址中已经存在怎样使用的步骤: 3.2 集成封装获取 ...

  8. 【SpringBoot笔记】SpringBoot整合Druid数据连接池

    废话少说,按SpringBoot的老套路来. [step1]:添加依赖 <!-- 数据库连接池 --> <dependency><groupId>com.aliba ...

  9. SpringBoot笔记:SpringBoot启动参数配置

    文章目录 目的 测试代码 配置文件配置 获取自定义参数 项目打包发布 修改启动配置 方式一:系统变量 方式二:命令行参数 springboot启动参数解释 目的 1.熟悉springboot多环境配置 ...

最新文章

  1. 声明式事务--@EnableTransactionManagement || @Transactional
  2. Enterprise Vault 10.0.4 FOR Exchange2013 部署之二 -安装过程
  3. “达观杯”文本智能处理挑战赛,季军带你飞
  4. 数字证书 - Java加密与安全
  5. Apache 2.0性能优化—MPM的选择与配置
  6. SqlServer之代码块相关
  7. spring @lazy_Spring @Lazy批注用例
  8. [vue] vue生命周期总共有几个阶段?
  9. DOM 精通了?请问 Node 和 Element 有何区别?
  10. android无网络状态栏,Android中检查网络连接状态的变化,无网络时跳转到设置界面...
  11. 查看python数据的属性
  12. SpringBoot多数据源切换详解,以及开启事务后数据源切换失败处理
  13. IDEA操作 名字快速驼峰等操作
  14. 计算机主页为什么打不开怎么办,主页被限制,打不开怎么办?
  15. 高效记忆/形象记忆(06)英语单词记忆-字母编码
  16. System V消息队列报Resource temporarily unavailable 错误
  17. 【环境配置】自定义Linux欢迎界面/etc/motd文件
  18. face_recognition移植至树莓派
  19. VC API常用函数简单例子大全(1-89)
  20. 浅析AVL树--AVL树的双旋转

热门文章

  1. python应用系统访问瀚高库
  2. 使用prometheus(普罗米修斯)监控mysql容器详解
  3. 我为什么想转型管理?——开发者的觉悟
  4. ap设置 维盟660g_维盟 FBM-580路由器功能参数介绍
  5. Python的富比较方法__eq__和__ne__之间的关联关系分析
  6. 最有发展前景的20个创业项目
  7. 爬虫-requests,微信公众号推送
  8. 2017.6.27DI/DO测试总结
  9. 华为鸿蒙os手机入网,首款鸿蒙OS手机入网 华为卖车两天破3000单
  10. 记一次ThreadLocal在工作上的妙用