Elasticsearch集成到Spring Boot项目

简介: 将Elasticsearch集成到Spring Boot项目中,可以方便地实现数据的搜索、分析等功能。

在Java开发中,Elasticsearch(ES)是一个非常受欢迎的分布式搜索引擎,而Spring Boot则是简化Spring应用初始搭建以及开发过程的一个框架。将Elasticsearch集成到Spring Boot项目中,可以方便地实现数据的搜索、分析等功能。下面是一个简单的示例,展示如何在Spring Boot应用中使用Elasticsearch。

环境准备

  1. Java环境:确保你有Java Development Kit (JDK) 8或更高版本。
  2. Maven或Gradle:本示例使用Maven作为构建工具。
  3. Elasticsearch:安装并运行Elasticsearch。可以在官方下载页面获取最新版本。
  4. Spring Boot:建议使用Spring Initializr来快速创建项目,或手动配置依赖。

创建Spring Boot项目

使用Spring Initializr(访问https://start.spring.io/),选择所需的依赖项,包括:

  • Web:用于启用Web支持。
  • Elasticsearch:自动添加Elasticsearch客户端依赖。

或者,如果你手动编辑pom.xml,添加以下依赖:

Xml

1<dependencies>
2    <dependency>
3        <groupId>org.springframework.boot</groupId>
4        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
5    </dependency>
6    <dependency>
7        <groupId>org.springframework.boot</groupId>
8        <artifactId>spring-boot-starter-web</artifactId>
9    </dependency>
10</dependencies>

配置Elasticsearch

application.propertiesapplication.yml中配置Elasticsearch连接信息:

Yaml

1spring.data.elasticsearch.cluster-name=your-cluster-name
2spring.data.elasticsearch.cluster-nodes=your-es-node-host:your-port

定义实体类

以一个简单的User实体为例:

Java

1import org.springframework.data.annotation.Id;
2import org.springframework.data.elasticsearch.annotations.Document;
3
4@Document(indexName = "user")
5public class User {
6    @Id
7    private String id;
8    private String name;
9    private String email;
10
11    // 构造函数、getters、setters省略
12}

创建Repository接口

继承ElasticsearchRepository来定义数据访问接口:

Java

1import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
2
3public interface UserRepository extends ElasticsearchRepository<User, String> {
4}

编写服务类

创建一个服务类来处理业务逻辑,如保存和查询用户:

Java

1import org.springframework.beans.factory.annotation.Autowired;
2import org.springframework.stereotype.Service;
3
4@Service
5public class UserService {
6    private final UserRepository userRepository;
7
8    @Autowired
9    public UserService(UserRepository userRepository) {
10        this.userRepository = userRepository;
11    }
12
13    public User save(User user) {
14        return userRepository.save(user);
15    }
16
17    public Iterable<User> findAll() {
18        return userRepository.findAll();
19    }
20}

控制器类

最后,创建一个控制器类来处理HTTP请求:

Java

1import org.springframework.beans.factory.annotation.Autowired;
2import org.springframework.web.bind.annotation.*;
3
4@RestController
5@RequestMapping("/users")
6public class UserController {
7    private final UserService userService;
8
9    @Autowired
10    public UserController(UserService userService) {
11        this.userService = userService;
12    }
13
14    @PostMapping
15    public User createUser(@RequestBody User user) {
16        return userService.save(user);
17    }
18
19    @GetMapping
20    public Iterable<User> getAllUsers() {
21        return userService.findAll();
22    }
23}

运行和测试

  • 启动你的Spring Boot应用。
  • 使用Postman或类似工具向http://localhost:8080/users发送POST请求,添加用户数据。
  • 发送GET请求到http://localhost:8080/users来获取所有用户数据,验证数据是否被正确索引。

以上就是一个基本的Spring Boot集成Elasticsearch的示例。根据实际需求,你可以扩展功能,比如添加复杂的查询、分页、排序

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
打赏
0
2
2
0
10
分享
相关文章
springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
通过本文,我们详细介绍了如何在 Spring Cloud 和 Spring Boot 中集成 Nacos 进行服务注册和配置管理,并对 Nacos 的源码进行了初步分析。Nacos 作为一个强大的服务注册和配置管理平台,为微服务架构提供
89 14
springBoot集成websocket实时消息推送
本文介绍了如何在Spring Boot项目中集成WebSocket实现实时消息推送。首先,通过引入`spring-boot-starter-websocket`依赖,配置`WebSocketConfig`类来启用WebSocket支持。接着,创建`WebSocketTest`服务器类,处理连接、消息收发及错误等事件,并使用`ConcurrentHashMap`管理用户连接。最后,前端通过JavaScript建立WebSocket连接,监听消息并进行相应处理。此方案适用于需要实时通信的应用场景,如聊天室、通知系统等。
SpringBoot项目打包成war包
通过上述步骤,我们成功地将一个Spring Boot应用打包成WAR文件,并部署到外部的Tomcat服务器中。这种方式适用于需要与传统Servlet容器集成的场景。
34 8
Elasticsearch AI Assistant 集成 DeepSeek,1分钟搭建智能运维助手
Elasticsearch 新支持 DeepSeek 系列模型,使用 AI 助手,通过自然语言交互,为可观测性分析、安全运维管理及数据智能处理提供一站式解决方案。
240 3
Elasticsearch AI Assistant 集成 DeepSeek,1分钟搭建智能运维助手
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
61 7
SpringBoot 通过集成 Flink CDC 来实时追踪 MySql 数据变动
通过详细的步骤和示例代码,您可以在 SpringBoot 项目中成功集成 Flink CDC,并实时追踪 MySQL 数据库的变动。
190 43
SpringBoot集成Tomcat、DispatcherServlet
通过这些配置,您可以充分利用 Spring Boot 内置的功能,快速构建和优化您的 Web 应用。
60 21
SpringBoot start.aliyun.com创建项目,解决properties乱码的问题
通过确保文件和开发环境的编码一致,配置 Maven 编码,设置 Spring Boot 应用和嵌入式服务器的编码,可以有效解决 properties 文件的乱码问题。以上步骤可以帮助开发者确保在 Spring Boot 项目中正确处理和显示多语言字符,避免因编码问题导致的乱码现象。
48 5
SpringBoot项目打war包流程
本文介绍了将Spring Boot项目改造为WAR包并部署到外部Tomcat服务器的步骤。主要内容包括:1) 修改pom.xml中的打包方式为WAR;2) 排除Spring Boot内置的Tomcat依赖;3) 添加Servlet API依赖;4) 改造启动类以支持WAR部署;5) 打包和部署。通过这些步骤,可以轻松地将Spring Boot应用转换为适合外部Tomcat服务器的WAR包。
167 64
SpringBoot项目打war包流程
|
2月前
基于springboot+thymeleaf+Redis仿知乎网站问答项目源码
基于springboot+thymeleaf+Redis仿知乎网站问答项目源码
162 36