【SpringBoot笔记26】SpringBoot框架集成ElasticSearch数据库
创始人
2024-02-03 06:22:04

这篇文章,主要介绍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】依赖即可。

org.elasticsearch.clientelasticsearch-rest-client
  • 如果是使用高级客户端,那就需要引入下面几个依赖。
    • ​​​​​​​【elasticsearch-rest-client】依赖。
    • 【elasticsearch】依赖。
    • elasticsearch-rest-high-level-client依赖。

org.elasticsearch.clientelasticsearch-rest-client


org.elasticsearchelasticsearch


org.elasticsearch.clientelasticsearch-rest-high-level-client

高级客户端需要引入的依赖:【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数据库。

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...