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:

xml 复制代码
<!-- 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:

properties 复制代码
spring.data.elasticsearch.cluster-nodes=localhost:9200

application.yml:

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

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

java 复制代码
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:

xml 复制代码
<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客户端。

java 复制代码
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:

properties 复制代码
elasticsearch.host=localhost
elasticsearch.port=9200

application.yml:

yaml 复制代码
elasticsearch:
  host: localhost
  port: 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提供的强大的搜索和分析功能,实现业务需求,应用实际场景,使我们最终的目标!!!

相关推荐
Mitch31119 分钟前
【漏洞复现】CVE-2015-3337 Arbitrary File Reading
elasticsearch·网络安全·docker·漏洞复现
lxyzcm21 分钟前
C++23新特性解析:[[assume]]属性
java·c++·spring boot·c++23
Mitch31123 分钟前
【漏洞复现】CVE-2015-5531 Arbitrary File Reading
web安全·elasticsearch·网络安全·docker·漏洞复现
迷糊的『迷』2 小时前
vue-axios+springboot实现文件流下载
vue.js·spring boot
鸭梨山大。2 小时前
Jenkins安全部署规范及安全基线
安全·中间件·jenkins
喝醉酒的小白2 小时前
Elasticsearch(ES)监控、巡检及异常指标处理指南
大数据·elasticsearch·搜索引擎
小池先生3 小时前
springboot启动不了 因一个spring-boot-starter-web底下的tomcat-embed-core依赖丢失
java·spring boot·后端
鸭梨山大。4 小时前
Jenkins 任意文件读取(CVE-2024-23897)修复及复现
安全·中间件·jenkins
苹果醋34 小时前
2020重新出发,MySql基础,MySql表数据操作
java·运维·spring boot·mysql·nginx
小蜗牛慢慢爬行4 小时前
如何在 Spring Boot 微服务中设置和管理多个数据库
java·数据库·spring boot·后端·微服务·架构·hibernate