Spring Boot整合ES的两种方式

在这里插入图片描述

使用Spring Data Elasticsearch Starter

在Spring Boot中整合Elasticsearch的方式之一是使用Elasticsearch的官方Spring Data Elasticsearch Starter。该Starter提供了对Elasticsearch的高级集成,简化了配置和管理Elasticsearch客户端。
在这里插入图片描述

下面是使用Spring Data Elasticsearch Starter的详细介绍以及如何管理客户端对象的初始化和关闭操作:

  1. 添加依赖坐标:

在项目的依赖管理文件(pom.xml或build.gradle)中添加Spring Data Elasticsearch Starter的依赖。以下是Maven的示例配置:

Maven:

<!-- Spring Data Elasticsearch Starter -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
  1. 配置Elasticsearch连接参数:

在application.properties或application.yml中配置Elasticsearch的连接参数,例如:

application.properties:

spring.data.elasticsearch.cluster-nodes=localhost:9200

application.yml:

spring:data:elasticsearch:cluster-nodes: localhost:9200
  1. 初始化和关闭客户端对象:

Spring Boot会自动根据配置文件中的参数来初始化Elasticsearch客户端对象。您可以直接注入RestHighLevelClient来使用它,Spring会负责管理客户端的初始化和关闭。

import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.stereotype.Service;@Service
public class MyElasticsearchService {private final RestHighLevelClient elasticsearchClient;public MyElasticsearchService(RestHighLevelClient elasticsearchClient) {this.elasticsearchClient = elasticsearchClient;}// 其他业务操作// ...
}

在上述代码中,我们在MyElasticsearchService中注入了RestHighLevelClient。Spring Boot会自动查找配置并创建Elasticsearch客户端,然后将其注入到MyElasticsearchService类中。当应用程序关闭时,Spring Boot会自动关闭Elasticsearch客户端。

确保Elasticsearch服务器在配置的节点上运行,并且应用程序能够连接到Elasticsearch服务器。整合完成后,您可以在MyElasticsearchService中使用elasticsearchClient来执行各种Elasticsearch操作。

通过使用Spring Data Elasticsearch Starter,您可以避免直接使用低级别的Elasticsearch客户端,而是利用Spring Boot的自动配置来简化初始化和关闭操作。这使得整合Elasticsearch变得更加容易和高效。

使用elasticsearch-rest-high-level-client

在Spring Boot中整合Elasticsearch的High Level Client,您首先需要添加相应的依赖坐标,然后可以使用Spring的管理机制来初始化和关闭客户端对象。
在这里插入图片描述

  1. 添加依赖坐标:

在项目的依赖管理文件(pom.xml或build.gradle)中添加elasticsearch-rest-high-level-client的依赖,以及其他必要的Elasticsearch依赖。以下是Maven的示例配置:

Maven:

<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.15.0</version> 
</dependency>
  1. 初始化和关闭客户端对象:

Spring Boot提供了@Bean注解,可以将客户端对象注入到Spring容器中,并在需要时进行初始化和关闭。您可以创建一个配置类,用于配置Elasticsearch客户端。

import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class ElasticsearchConfig {@Value("${elasticsearch.host}")private String host;@Value("${elasticsearch.port}")private int port;@Bean(destroyMethod = "close")public RestHighLevelClient elasticsearchClient() {RestClientBuilder builder = RestClient.builder(new HttpHost(host, port));return new RestHighLevelClient(builder);}
}

在上述配置类中,@Configuration注解表示这是一个配置类,@Bean注解用于声明一个Bean,其中destroyMethod属性指定了在Spring容器关闭时调用的方法,用于关闭客户端。

  1. 在application.properties或application.yml中配置连接参数:

在配置文件中添加Elasticsearch的连接参数,例如:

application.properties:

elasticsearch.host=localhost
elasticsearch.port=9200

application.yml:

elasticsearch:host: localhostport: 9200

这样,当Spring Boot应用程序启动时,Elasticsearch客户端将被自动初始化,并且可以在其他地方通过@Autowired或@Resource注解将其注入到需要使用的类中。在应用程序关闭时,Spring Boot会自动调用客户端的close()方法来关闭连接。

注意:确保Elasticsearch服务器在指定的主机和端口上运行,并且可以从应用程序访问。

总结概括

整合Elasticsearch是Spring Boot的一项常见任务,用于在应用程序中使用Elasticsearch搜索和分析功能。ES搜索引擎着实强大!通过以上两种方式,大家可以很好的了解一下:

在Spring Boot中整合Elasticsearch,可以采用两种主要方式:

  1. 使用elasticsearch-rest-high-level-client依赖:这种方式是直接使用Elasticsearch官方提供的Java客户端,通过HTTP与Elasticsearch集群通信。需要在代码中手动配置连接参数,并管理客户端对象的初始化和关闭。

  2. 使用Spring Data Elasticsearch Starter:这种方式使用Spring Data Elasticsearch Starter依赖来简化整合过程。Starter自动配置了Elasticsearch客户端,您只需在配置文件中指定连接参数,Spring Boot会自动初始化和管理客户端对象。

管理客户端对象的初始化和关闭操作:

  • 对于elasticsearch-rest-high-level-client:您可以使用Java配置类,在其中通过@Bean注解创建RestHighLevelClient Bean,并使用@Value注解来读取连接参数。然后使用@Bean的destroyMethod属性指定客户端的关闭方法,在应用程序关闭时关闭客户端。

  • 对于Spring Data Elasticsearch Starter:只需在代码中直接注入RestHighLevelClient Bean,并在需要时使用它来执行Elasticsearch操作。Spring Boot会自动管理客户端对象的初始化和关闭。

无论您选择哪种方式整合Elasticsearch,都需要确保Elasticsearch服务器在配置的节点上运行,并且应用程序能够连接到Elasticsearch服务器。利用ES提供的强大的搜索和分析功能,实现业务需求,应用实际场景,使我们最终的目标!!!

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

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

相关文章

Mysql的instr()函数用法详解

最近接手了一个大型老项目&#xff0c;用到的jfinal技术&#xff0c;后端大部分都是拼写的sql&#xff0c;对一些sql函数不太理解的我算是一个挑战&#xff0c;也是一个进步的很大空间。 今天来说下instr这个函数 首先看下我们的表数据 我们先执行&#xff1a; SELECT * fro…

【学习笔记】生成式AI(ChatGPT原理,大型语言模型)

ChatGPT原理剖析 语言模型 文字接龙 ChatGPT在测试阶段是不联网的。 ChatGPT背后的关键技术&#xff1a;预训练&#xff08;Pre-train&#xff09; 又叫自监督式学习&#xff08;Self-supervised Learning&#xff09;&#xff0c;得到的模型叫做基石模型&#xff08;Founda…

重发布选路问题

一、思路 &#xff1b; 1.增加不优选路开销解决选路不佳问题 2.用增加开销的方式使R1 不将ASBR传的R7传给另一台ASBR解决R1、R2、R3、R4pingR7环回环路 二、操作 ------IP地址配置如图 1.ospf及rip的宣告 rip&#xff1a; [r1]rip 1 [r1-rip-1]version 2 [r1-rip-1]netw…

详细介绍golang中.()类型断言的使用方法

文章目录 一、什么是.()用法&#xff1f;二、.()的基本用法三、.()用法的高级应用3.1 nil类型的转换3.2 将函数作为参数传递 四、.()使用中的注意事项五、总结 Golang是一门非常流行的编程语言&#xff0c;在很多领域都有着广泛的应用。在开发过程中&#xff0c;很多时候我们需…

2021年12月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题(共25题,每题2分,共50分) 第1题 昨天的温度是5摄氏度,今天降温7摄氏度,今天的温度是多少摄氏度? A:12 B:7 C:2 D:-2 正确的答案是 D:-2。 解析: 根据题目描述,昨天的温度是 5 摄氏度,今天降温了 7 摄氏度。降温意味着温度变低,所以今天的温度…

DLA 神经网络的极限训练方法:gradient checkpointing

gradient checkpointing 一般来说&#xff0c;训练的过程需要保存中间结果&#xff08;不管是GPU还是CPU&#xff09;。前向传播根据输入(bottom_data)计算输出(top_data)&#xff0c;后向传播由top_diff计算bottom_diff&#xff08;如果某个变量打开梯度进行训练的话&#xff…

Android 获取网络连接状态新方法

一. 问题背景 Android12上&#xff0c;有的app模块判断当前网络的类型和连接状态时&#xff0c;还是使用的旧的API&#xff0c;导致返回的结果不准确&#xff0c;影响代码逻辑判断&#xff0c;本篇文章就这一问题&#xff0c;整理一下判断网络类型和连接状态的新方法。 二. 原因…

CC++内存管理与模版初阶

目录 四、C&C内存管理 (一)C/C内存分布 (二)C内存管理方式 1、new/delete操作内置类型 2、new和delete操作自定义类型 (三)operator new与operator delete函数 (四)new和delete的实现原理 1、内置类型 2、自定义类型 (五)定位new表达式(placement-new) (六)八股文 1、n…

华为发布数字资产继承功能

在华为开发者大会2023&#xff08;HDC.Together&#xff09;上&#xff0c;华为常务董事、终端BG CEO、智能汽车解决方案BU CEO余承东正式发布了数字资产继承功能&#xff0c;HarmonyOS提供了安全便捷的数字资产继承路径。 在鸿蒙世界中&#xff0c;我们每个人在每台设备、应用…

Git从远程仓库中删除文件,并上传新文件

目录 删除&#xff1a; 拉取远程分支的更新&#xff1a; ​编辑 首先查看git状态&#xff1a; ​编辑 删除文件并提交版本库&#xff1a; 提交&#xff1a; 上传新文件&#xff1a; 首先查看git状态&#xff1a; 提交到暂存区&#xff1a; 提交到版本库&#xff1a; 上…

windows环境下如何更改pip安装的默认位置

1.查看配置信息 python -m site2.查看配置文件位置 python -m site -help3.修改配置文件 USER_SITE "D:\\soft\\Anaconda\\Lib\\site-packages" USER_BASE "D:\\soft\\Anaconda\\Scripts"如果遇到文件无法保存情况&#xff0c;请给用户增加权限。 4.…

Netty框架自带类DefaultEventExecutorGroup的作用,用来做业务的并发

一、DefaultEventExecutorGroup的用途 DefaultEventExecutorGroup 是 Netty 框架中的一个类&#xff0c;用于管理和调度事件处理器&#xff08;EventExecutor&#xff09;的组。在 Netty 中&#xff0c;事件处理是通过多线程来完成的&#xff0c;EventExecutor 是处理事件的基…