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

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文件中添加以下依赖:

<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时,内容如下:

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

使用application.properties时,内容为:

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

创建实体类

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

import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;@,Document(indexName = "user")
public class User {@Idprivate String id;private String name;private Integer age;// 省略构造方法、getter 和 setter 方法
}

创建 Repository 接口

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

import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;public interface UserRepository extends ElasticsearchRepository<User, String> {User findByName(String name);
}

使用 Repository 操作数据

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

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;@RestController
public class UserController {@Autowiredprivate 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 客户端配置 :若需自定义连接池等配置,可通过创建配置类实现。例如:

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

相关文章:

  • new的几种形式
  • Python 数据智能实战 (7):智能流失预警 - 融合文本反馈
  • 创意效率双提升,AIGC让增长更轻盈
  • Spring Boot中集成Guava Cache或者Caffeine
  • 第 1 篇:起点的选择:为何需要超越数组与链表?
  • 菲索旋转齿轮法:首次地面光速测量的科学魔术
  • 信息收集新利器:SSearch Chrome 插件来了
  • ROPE(旋转位置编码)简述
  • 当神经网络突破摩尔定律:探索大模型时代的算力新纪元
  • AimRT从入门到精通 - 03Channel发布者和订阅者
  • PDF智能解析与知识挖掘:基于pdfminer.six的全栈实现
  • 【论文阅读一】掌握高效阅读法,开启学术研究新旅程:S. Keshav教授论文阅读的三遍法
  • 华为OD机试真题 Java 实现【水库蓄水问题】
  • 杭电oj(1180、1181)题解
  • 【算法应用】基于鲸鱼优化算法WOA求解VRPTW问题
  • 《缓存策略:移动应用网络请求的“效能密钥” 》
  • 【数据库】四种连表查询:内连接,外连接,左连接,右连接
  • 文章三《机器学习基础概念与框架实践》
  • 【Android】Intent
  • LeetCode 560. 和为 K 的子数组 | 前缀和与哈希表的巧妙应用
  • 德国巴斯夫:关税政策加剧全球市场不确定性,间接影响已显现
  • 申活观察|人潮涌动成常态,豫园为何常来常新?
  • 福州交警:一小型汽车因操作不当撞上汽车和电动车,致2人死亡
  • 即日起,“应急使命·2025”演习公开征集新质救援能力
  • 印度宣布即日起对所有巴基斯坦航班关闭领空
  • 世界黄金协会:一季度全球黄金投资需求同比增170%