当前位置: 首页 > news >正文

Spring Boot 整合 Elasticsearch 实践:从入门到上手

引言

Elasticsearch 是一个开源的分布式搜索引擎,广泛用于日志分析、搜索引擎、数据分析等场景。本文将带你通过一步步的教程,在 Spring Boot 项目中整合 Elasticsearch,轻松实现数据存储与查询。

1. 创建 Spring Boot 项目

首先,你需要创建一个 Spring Boot 项目。如果你还没有创建,可以使用 Spring Initializr 快速生成一个项目。在生成项目时,确保选择了以下依赖:

  • Spring Web
  • Spring Data Elasticsearch
  • Spring Boot DevTools(可选)

2. 添加依赖

打开项目中的 pom.xml 文件,添加 Spring Data Elasticsearch 相关的依赖:

<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>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

3. 配置 application.yml

src/main/resources/application.ymlapplication.properties 中配置 Elasticsearch 连接信息:

使用 application.yml

spring:
  data:
    elasticsearch:
      cluster-name: your-cluster-name
      cluster-nodes: localhost:9200

使用 application.properties

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

请确保你的 Elasticsearch 服务已启动,通常默认地址是 localhost:9200

4. 创建 Elasticsearch 实体类

接下来,我们需要创建一个实体类来映射到 Elasticsearch 中的文档。可以使用 @Document 注解来标识这个类为 Elasticsearch 文档。

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;

    // Getters and Setters
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

5. 创建 Elasticsearch Repository 接口

使用 Spring Data Elasticsearch 提供的 ElasticsearchRepository 接口,可以轻松实现对 Elasticsearch 的 CRUD 操作。

import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

public interface UserRepository extends ElasticsearchRepository<User, String> {
    // 自定义查询方法
    User findByName(String name);
}

6. 使用 Repository 进行数据操作

Controller 层注入 UserRepository,即可实现对 Elasticsearch 的基本数据操作。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@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);
    }
}

7. 启动 Elasticsearch 服务

确保你的 Elasticsearch 服务已经启动。你可以通过以下命令启动 Elasticsearch:

./bin/elasticsearch

启动成功后,访问 http://localhost:9200,你应该可以看到 Elasticsearch 的状态信息。

8. 测试 Spring Boot 与 Elasticsearch 的集成

启动 Spring Boot 项目后,使用 Postman 或 cURL 进行测试:

  • 保存用户数据:POST /users 发送请求,传入用户数据(例如:{"name": "John", "age": 30})。
  • 查询用户数据:GET /users?name=John 发送请求,查询刚刚保存的用户。

9. 进阶优化与配置

自定义 Elasticsearch 客户端配置

如果需要自定义连接池和配置 Elasticsearch 客户端,可以通过以下方式配置:

import org.apache.http.impl.client.HttpClients;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.RestClientBuilder;

@Configuration
public class ElasticsearchConfig {

    @Bean
    public RestHighLevelClient client() {
        RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "http"));
        return new RestHighLevelClient(builder);
    }
}

优化性能

  • 索引设置:适当设置索引的分片数和副本数。
  • 查询优化:对查询进行分页和缓存优化,减少查询开销。

结语

通过本文,你已经学会了如何在 Spring Boot 项目中整合 Elasticsearch,进行基本的索引创建、文档操作以及查询。同时,掌握了一些优化技巧,可以帮助你在生产环境中更高效地使用 Elasticsearch。

如果你对 Elasticsearch 或 Spring Boot 集成有任何问题,欢迎在评论区留言。

相关文章:

  • Leetcode——28. 找出字符串中第一个匹配项的下标
  • 使用 PIC 微控制器和 Adafruit IO 的基于 IoT 的 Web 控制家庭自动化
  • 在大数据开发中ETL是指什么?
  • 网络编程-实现客户端通信
  • conda相关总结
  • 基于Spring Boot的图书管理系统的设计与实现(LW+源码+讲解)
  • 蓝桥杯真题——洛谷Day13 找规律(修建灌木)、字符串(乘法表)、队列(球票)
  • 如何制作一个自己的网站?
  • Excel 小黑第12套
  • 【华为OD-E卷 - 求符合条件元组个数 100分(python、java、c++、js、c)】
  • Redis高级结构-布隆过滤器
  • 【量化科普】Alpha,阿尔法收益
  • laravel 对 数据库 json 字段的查询方式汇总
  • 在 Offset Explorer 中配置多节点 Kafka 集群的详细指南
  • gralloc usage flags
  • 关于QMetaObject::invokeMethod的作用和用法
  • Rust 生命周期
  • 【深度学习与大模型基础】第7章-特征分解与奇异值分解
  • python鸢尾花
  • 基于java的ssm+JSP+MYSQL的九宫格日志网站(含LW+PPT+源码+系统演示视频+安装说明)
  • 当创业热土遇上年轻气息,上海南汇新城发展如何再发力?
  • 未来之城湖州,正在书写怎样的城市未来
  • 印称一名高级官员在巴基斯坦发动的袭击中死亡
  • 方正证券总裁何亚刚到龄退休,54岁副总裁姜志军接棒
  • 早期投资人蜂巧资本清仓泡泡玛特套现超22亿港元,称基金即将到期
  • 纽约大学朗格尼医学中心的转型带来哪些启示?