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);
        }
    }
  • 性能优化 :合理设置索引的分片数和副本数,对查询进行分页和缓存优化,为重要字段设置合适的索引类型等,以提高查询性能和系统效率。

相关推荐
程序员 小柴1 分钟前
ElasticSearch入门
大数据·elasticsearch·jenkins
Elastic 中国社区官方博客11 分钟前
Elastic Platform 8.18 和 9.0:ES|QL Lookup Joins 功能现已推出,Lucene 10!
大数据·人工智能·sql·elasticsearch·搜索引擎·全文检索·lucene
hac13221 小时前
SpringBoot多环境配置
java·spring boot·后端
猿来入此小猿3 小时前
基于SpringBoot+Vue实现的电影推荐平台功能一
vue.js·spring boot·毕业设计·毕业源码·免费学习·猿来入此·电影推荐平台
bingbingyihao3 小时前
ES集群搭建及工具类
java·elasticsearch
chasemydreamidea3 小时前
书生实战营之沐曦专场
大数据·elasticsearch·搜索引擎
一顿操作猛如虎,啥也不是!3 小时前
IDEA git配置[通俗易懂]
大数据·elasticsearch·搜索引擎
Go高并发架构_王工4 小时前
GoFrame框架深度解析:grpool的优势、最佳实践与踩坑经验
服务器·后端·golang
exe4525 小时前
4 月 28 日项目进展与规划会议纪要
后端
我命由我123455 小时前
C++ - 数据容器之 list(创建与初始化、元素访问、容量判断、元素遍历、添加元素、删除元素)
c语言·开发语言·c++·后端·visualstudio·c#·visual studio