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.rhkb.cn/news/80299.html

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

相关文章

【C++】智能指针

一、为什么要智能指针 下面我们先分析下面这段程序有没有什么内存方面的问题&#xff1f; int Div(int a, int b) {if (b 0)throw invalid_argument("除0错误");elsereturn a / b; } void Func() {// 1、如果 p1 这里 new 抛异常会如何&#xff1f;// 2、如果 p2 …

【C++从0到王者】第十六站:stack和queue的使用

文章目录 一、stack的使用1.stack的介绍2.stack的使用 二、queue的使用1.queue的护额晒2.queue的使用 三、stack和queue相关算法题1.最小栈2.栈的压入、弹出序列3.逆波兰表达式4.两个栈实现一个队列5.用两个队列实现栈6.二叉树的层序遍历1.双队列2.用一个变量levelSize去控制 7…

K8S系列文章 之 编写自动化部署K8S脚本

介绍 通过ansible脚本shell实现自动化部署k8s基础集群(v1.25.0) 部署结构 1. 通过二进制部署包镜像安装k8s集群、目录etcd节点只支持1-3个节点、最多三个etcd节点 2. 因k8s版本相对较新、需要升级内核来支持后台程序、当前版本只支持Cento7&#xff0c;内核版本(5.19.4-1.el7…

ffmpeg+nginx实现rtsp协议摄像头web端播放

ffmpegnginx实现rtsp协议摄像头web端播放 环境准备准备nginx环境添加rtmp模块添加hls转发 使用ffmpeg&#xff0c;将摄像头rtsp转为rtmp并推送到nginxVLC播放验证 环境准备 nginx&#xff08;需要安装rtmp模块&#xff09;ffmpeg 6.0vlc播放器&#xff08;本地播放验证&#x…

大数据课程H2——TELECOM的电信流量项目实现

文章作者邮箱&#xff1a;yugongshiyesina.cn 地址&#xff1a;广东惠州 ▲ 本章节目的 ⚪ 了解TELECOM项目的数据收集&#xff1b; ⚪ 了解TELECOM项目的数据清洗&#xff1b; ⚪ 了解TELECOM项目的数据导出&#xff1b; ⚪ 了解TELECOM项目的数据可视化&…

观察者模式(C++)

定义 定义对象间的一种一对多(变化)的依赖关系&#xff0c;以便当一个对象(Subject)的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并自动更新。 ——《设计模式》GoF 使用场景 一个对象&#xff08;目标对象&#xff09;的状态发生改变&#xff0c;所有的依赖对…

SpringBoot第33讲:SpringBoot集成ShardingJDBC - 基于JPA的读写分离

SpringBoot第33讲&#xff1a;SpringBoot集成ShardingJDBC - 基于JPA的读写分离 本文是SpringBoot第33讲&#xff0c;主要介绍分表分库&#xff0c;以及SpringBoot集成基于 ShardingJDBC 的读写分离实践 文章目录 SpringBoot第33讲&#xff1a;SpringBoot集成ShardingJDBC - 基…

uni-app:实现点击按钮出现底部弹窗(uni.showActionSheet+自定义)

一、通过uni.showActionSheet实现底部选择 效果 代码 <template><view><button click"showActionsheet">点击打开弹窗</button></view> </template><script> export default {methods: {showActionsheet() {uni.showAct…

消息队列项目(2)

我们使用 SQLite 来进行对 Exchange, Queue, Binding 的硬盘保存 对 Message 就保存在硬盘的文本中 SQLite 封装 这里是在 application.yaml 中来引进对 SQLite 的封装 spring:datasource:url: jdbc:sqlite:./data/meta.dbusername:password:driver-class-name: org.sqlite.…

Python 中的机器学习简介:多项式回归

一、说明 多项式回归可以识别自变量和因变量之间的非线性关系。本文是关于回归、梯度下降和 MSE 系列文章的第三篇。前面的文章介绍了简单线性回归、回归的正态方程和多元线性回归。 二、多项式回归 多项式回归用于最适合曲线拟合的复杂数据。它可以被视为多元线性回归的子集。…

APP外包开发的学习流程

学习iOS App的开发是一项有趣和富有挑战性的任务&#xff0c;是一个不断学习和不断进步的过程。掌握基础知识后&#xff0c;不断实践和尝试新的项目将使您的技能不断提升。下面和大家分享一些建议&#xff0c;可以帮助您开始学习iOS App的开发。北京木奇移动技术有限公司&#…

DAY02_Spring—第三方资源配置管理Spring容器Spring注解开发Spring整合Mybatis和Junit

目录 一 第三方资源配置管理1 管理DataSource连接池对象问题导入1.1 管理Druid连接池1.2 管理c3p0连接池 2 加载properties属性文件问题导入2.1 基本用法2.2 配置不加载系统属性2.3 加载properties文件写法 二 Spring容器1 Spring核心容器介绍问题导入1.1 创建容器1.2 获取bean…

软件架构师思维塑造

一、软件系统设计的六项原则 1、单一职责原则&#xff08;Single Responsibility Principle&#xff09; 2、开闭原则&#xff08;Open Closed Principle&#xff09; 3、里氏替换原则&#xff08;Liskov Substitution Principle&#xff09; 4、迪米特法则&#xff08;Law of …

微服务 云原生:基于 Gogs + Drone 进行项目 CI/CD

传统构建部署 以一个简单的前后端项目来说&#xff0c;分别编写前后端的 Dockerfile 文件并构建镜像&#xff0c;然后编写 docker-compose.yml 构建部署&#xff0c;启动运行。 一个简单的例子&#xff1a; 前端&#xff1a; 项目名&#xff1a;kubemanagement-web技术栈&am…

Java中Date方法详解

先进行专栏介绍 本专栏是自己学Java的旅途&#xff0c;纯手敲的代码&#xff0c;自己跟着黑马课程学习的&#xff0c;并加入一些自己的理解&#xff0c;对代码和笔记 进行适当修改。希望能对大家能有所帮助&#xff0c;同时也是请大家对我进行监督&#xff0c;对我写的代码进行…

eeglab(自用)

目录 1.加载、显示数据 2.绘制脑电头皮图 3.绘制通道光谱图 4.预处理工具 5.ICA去除伪迹 5. 提取数据epoch 1.加载、显示数据 观察事件值(Event values)&#xff1a;该数据集中包含2400个事件&#xff0c;每个事件指定了EEG.event结构的字段Type(类型)、position(位置)和…

【Linux命令详解 | cat命令】Linux系统中用于显示或连接文件的命令

文章标题 简介一&#xff0c;参数列表二&#xff0c;使用介绍1. 显示文件内容2. 创建文件3. 连接文件4. 显示行号5. 压缩空行6. 显示特殊字符7. 显示行号和特殊字符8. 从标准输入读取9. 显示文件开头或结尾10. 备份文件11. 显示文件内容至多屏幕大小12. 转义正则表达式13. 显示…

java文件

一.File类 二.扫描指定目录&#xff0c;并找到名称中包含指定字符的所有普通文件&#xff08;不包含目录&#xff09;&#xff0c;并且后续询问用户是否要删除该文件 我的代码: import java.io.File; import java.io.IOException; import java.util.Scanner;public class Tes…

瑞芯微RK3568核心板-4G联网测试

​ &#x1f308;引言 RK3568是瑞芯微针对AIOT和工业市场推出的一款高性能、低功耗、功能丰富的应用处理器。它采用了四核ARM架构64位Cortex-A55处理器&#xff0c;主频高达2.0GHz&#xff0c;集成瑞芯微自研1TOPS算力NPU, 同时集成Mali-G52 2EE GPU&#xff0c;支持4K60fps …

React Native连接Zebra斑马打印机通过发送CPCL指令打印(Android 和 iOS通用)

自 2015 年发布以来&#xff0c;React Native 已成为用于构建数千个移动应用程序的流行跨平台移动开发框架之一。通常&#xff0c;我们有开发人员询问如何将 Link-OS SDK 与 React Native 应用程序集成&#xff0c;以便在 Zebra 打印机上打印标签。在本教程中&#xff0c;我们将…