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

这篇具有很好参考价值的文章主要介绍了【开发篇】九、SpringBoot整合ES(ElasticSearch)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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方法来改进下:

springboot集成es,SpringBoot,spring boot,elasticsearch,后端

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,写不写都行

springboot集成es,SpringBoot,spring boot,elasticsearch,后端
springboot集成es,SpringBoot,spring boot,elasticsearch,后端

springboot集成es,SpringBoot,spring boot,elasticsearch,后端

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

4、增删改查索引与文档

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

springboot集成es,SpringBoot,spring boot,elasticsearch,后端
springboot集成es,SpringBoot,spring boot,elasticsearch,后端
springboot集成es,SpringBoot,spring boot,elasticsearch,后端文章来源地址https://www.toymoban.com/news/detail-767152.html

到了这里,关于【开发篇】九、SpringBoot整合ES(ElasticSearch)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springboot整合redis,MongoDB,Elasticsearch(ES)

    目录  springboot整合redis 连接Redis 字符串操作 哈希表操作 列表操作 集合操作 有序集合操作 lettcus与jedis的区别  springboot整合MongoDB 新增数据 查询数据 更新数据 删除数据  springboot整合Elasticsearch(ES) 创建ElasticsearchRepository 创建实体类 增删改查 搜索 Spring Boot整合Redis,需要使

    2024年02月05日
    浏览(35)
  • elasticSearch集群 springboot集成es 完全解析

    #编写compose.yml配置文件 #每个节点都创建一个elasticsearch.yml文件 用到的命令: systemctl start docker docker-compose up es和kibana版本必须一样 environment:配置容器内的环境变量 networks:创建一个名为elastic的局域网,让各节点以及kibana,es-head相互联系 network.host: 0.0.0.0:意为监听一切地址,可

    2024年02月03日
    浏览(38)
  • ElasticSearch序列 - SpringBoot整合ES:范围查询 range

    01. ElasticSearch range查询是什么? Elasticsearch 中的 range 查询可以用于查询某个字段在一定范围内的文档。 range 查询可同时提供包含和不包含这两种范围表达式,可供组合的选项如下: gt : 大于(greater than) lt : 小于(less than) gte : = 大于或等于(greater than or equal to) lte : = 小于

    2024年02月09日
    浏览(37)
  • 【Elasticsearch】SpringBoot整合ES实现搜索功能 | 高亮显示

    先看代码: controller: serviceImpl: 小结 : 1、添加ES场景启动器 2、yaml配置ES 3、准备需要用到的变量 注:还有一个注入的RestHighLevelClient 结构如下: 具体调用的方法以及设置页码等参看代码。 加断点查看对应searchResponse数据结构: HighlightFields的数据结构: 对照kinaba结果: 3、根

    2024年02月11日
    浏览(38)
  • ElasticSearch | SpringBoot集成ES异常以及处理方法

    异常 Elasticsearch exception Elasticsearch exception [type=cluster_block_exception, reason=index [video_struct_vehicle] blocked by: [FORBIDDEN/12/index read-only / allow delete (api)]; 产生原因 服务磁盘内存不足,导致无法删除,所有索引都变成了只读 read-only状态。 一旦在存储超过95%的磁盘中的节点上分配了一个

    2024年02月13日
    浏览(31)
  • Springboot 整合 Elasticsearch(五):使用RestHighLevelClient操作ES ②

    📁 前情提要: Springboot 整合 Elasticsearch(三):使用RestHighLevelClient操作ES ① 目录  一、Springboot 整合 Elasticsearch 1、RestHighLevelClient API介绍 1.1、全查询 分页 排序 1.2、单条件查询 1.2.1、termQuery 1.2.2、matchQuery 1.2.3、短语检索 1.3、组合查询 1.4、范围查询 1.5、模糊查询 1.6、分组

    2024年04月11日
    浏览(35)
  • ElasticSearch系列 - SpringBoot整合ES:多个精确值查询 terms

    ElasticSearch - SpringBoot整合ES:多个精确值查询 terms 01. ElasticSearch terms 查询支持的数据类型 在Elasticsearch中,terms查询支持多种数据类型,包括: 字符串类型:可以将多个字符串值作为数组传递给terms查询,以匹配包含任何一个指定字符串值的文档。 数值类型:可以将多个数值作

    2024年02月16日
    浏览(63)
  • ElasticSearch序列 - SpringBoot整合ES:根据指定的 ids 查询

    1. ElasticSearch 根据 ids 查询文档 ① 索引文档,构造数据 ② 查询文档 id 为 1 或者 2 的文档: 我们索引文档时,文档的id为整型,为什么查询出来的文档 id为字符串类型呢?如果我们使用字符串类型的文档id查询呢? 可以看到仍然可以查询到匹配的文档。 在Elasticsearch中,文档

    2024年02月11日
    浏览(49)
  • ElasticSearch系列 - SpringBoot整合ES:组合多个查询条件 bool 查询

    01. ElasticSearch 布尔查询是什么? 在实际应用中,我们很有可能会查询多个值或字段。 一个 bool 查询由三部分组成: must:所有的语句都必须(must) 匹配,与 AND 等价。 must_not:所有的语句都不能(must not)匹配,与 NOT 等价。 should:至少有一个语句要匹配,与 OR 等价。 02.

    2023年04月08日
    浏览(65)
  • ElasticSearch系列 - SpringBoot整合ES之全文搜索匹配查询 match

    官方文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/index.html 权威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/current/structured-search.html 1. 数据准备 官方测试数据下载地址:https://download.elastic.co/demos/kibana/gettingstarted/accounts.zip ,数据量很大,我们自己构造数据吧。 2. m

    2023年04月08日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包