Spring Boot 集成 Elasticsearch 的详细步骤

以下是 Spring Boot 集成 Elasticsearch 的详细步骤:

环境安装

  • 安装 Java :Elasticsearch 基于 Java,需先安装 JDK 11 或更高版本。从官 方网站下载安装包,按教程安装配置,安装后通过命令行输入java -version验证。

  • 安装 Elasticsearch :根据官方文档选择适合系统的安装方式。如在 Windows 上可从官网下载 ZIP 包解压,Mac 用户可用 Homebrew 或官网下载,Linux 用户可从官方仓库或官网下载安装。

  • 安装 Kibana :用于可视化和管理 Elasticsearch 数据。从官网下载对应版本的 Kibana,安装过程与 Elasticsearch 类似。

创建 Spring Boot 项目

使用 Spring Initializr 快速生成项目,选择 Maven 作为构建工具,并添加"Spring Web"和"Spring Data Elasticsearch"依赖。指定项目元数据如项目名、描述、版本、包名和 Java 版本后,点击生成按钮下载项目压缩包并解压。

添加依赖

在项目的pom.xml文件中添加以下依赖:

XML 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

配置 Elasticsearch 连接

src/main/resources/application.ymlapplication.properties中配置 Elasticsearch 连接信息。使用application.yml时,内容如下:

bash 复制代码
spring:
  data:
    elasticsearch:
      cluster-name: your-cluster-name
      cluster-nodes: localhost:9200

使用application.properties时,内容为:

bash 复制代码
spring.data.elasticsearch.cluster-name=your-cluster-name
spring.data.elasticsearch.cluster-nodes=localhost:9200

创建实体类

创建实体类并用@Document注解标记为 Elasticsearch 文档,例如:

java 复制代码
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;

@,Document(indexName = "user")
public class User {
    @Id
    private String id;
    private String name;
    private Integer age;
    // 省略构造方法、getter 和 setter 方法
}

创建 Repository 接口

定义一个继承自ElasticsearchRepository的接口,实现对 Elasticsearch 的 CRUD 操作。例如:

java 复制代码
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

public interface UserRepository extends ElasticsearchRepository<User, String> {
    User findByName(String name);
}

使用 Repository 操作数据

在 Controller 层注入 Repository 接口,实现数据操作。例如:

java 复制代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
public class UserController {
    @Autowired
    private UserRepository userRepository;

    @PostMapping("/users")
    public User saveUser(@RequestBody User user) {
        return userRepository.save(user);
    }

    @GetMapping("/users")
    public User getUserByName(String name) {
        return userRepository.findByName(name);
    }
}

启动 Elasticsearch 服务

确保 Elasticsearch 服务已启动。可在解压后的 Elasticsearch 目录下,通过命令./bin/elasticsearch启动,启动成功后访问http://localhost:9200可查看其状态信息。

测试集成

启动 Spring Boot 项目,使用 Postman 或 cURL 测试数据操作功能。如向POST /users发送请求添加用户数据,向GET /users?name=John发送请求查询用户数据。

进阶优化与配置

  • 自定义 Elasticsearch 客户端配置 :若需自定义连接池等配置,可通过创建配置类实现。例如:

    java 复制代码
    @Configuration
    public class ElasticsearchConfig {
        @Bean
        public RestHighLevelClient client() {
            RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "http"));
            return new RestHighLevelClient(builder);
        }
    }
  • 性能优化 :合理设置索引的分片数和副本数,对查询进行分页和缓存优化,为重要字段设置合适的索引类型等,以提高查询性能和系统效率。

相关推荐
Albert Edison27 分钟前
【最新版】IntelliJ IDEA 2025 创建 SpringBoot 项目
java·spring boot·intellij-idea
Piper蛋窝1 小时前
深入 Go 语言垃圾回收:从原理到内建类型 Slice、Map 的陷阱以及为何需要 strings.Builder
后端·go
六毛的毛4 小时前
Springboot开发常见注解一览
java·spring boot·后端
AntBlack4 小时前
拖了五个月 ,不当韭菜体验版算是正式发布了
前端·后端·python
31535669134 小时前
一个简单的脚本,让pdf开启夜间模式
前端·后端
uzong4 小时前
curl案例讲解
后端
开开心心就好5 小时前
免费PDF处理软件,支持多种操作
运维·服务器·前端·spring boot·智能手机·pdf·电脑
一只叫煤球的猫5 小时前
真实事故复盘:Redis分布式锁居然失效了?公司十年老程序员踩的坑
java·redis·后端
猴哥源码5 小时前
基于Java+SpringBoot的农事管理系统
java·spring boot
G皮T6 小时前
【Elasticsearch】深度分页及其替代方案
大数据·elasticsearch·搜索引擎·scroll·检索·深度分页·search_after