Elasticsearch集成到Spring Boot项目

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 将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可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
1月前
|
Java Maven
2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
这篇文章是一份关于Maven的安装和配置指南,包括下载、环境变量设置、配置文件修改、IDEA集成Maven以及解决jar包下载问题的方法。
2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
|
14天前
|
JSON 自然语言处理 算法
ElasticSearch基础2——DSL查询文档,黑马旅游项目查询功能
DSL查询文档、RestClient查询文档、全文检索查询、精准查询、复合查询、地理坐标查询、分页、排序、高亮、黑马旅游案例
ElasticSearch基础2——DSL查询文档,黑马旅游项目查询功能
|
1月前
|
网络协议 Java API
SpringBoot整合Elasticsearch-Rest-Client、测试保存、复杂检索
这篇文章介绍了如何在SpringBoot中整合Elasticsearch-Rest-Client,并提供了保存数据和进行复杂检索的测试示例。
SpringBoot整合Elasticsearch-Rest-Client、测试保存、复杂检索
|
19天前
|
存储 NoSQL 数据处理
组合和继承怎么集成一个性能较好的项目
组合与继承是面向对象编程的核心概念,前者通过对象间关联实现高效解耦,后者则重用代码以节省空间和内存。组合常用于现代项目,利用代理与依赖注入简化代码管理;而继承简化了子模块对父模块资源的应用,但修改会影响整体。随着分层解耦及微服务架构如SpringCloud的出现,这些技术进一步优化了数据处理效率和服务响应性能,尤其在分布式存储与高并发场景下。同步异步调用、Redis分布式应用等也广泛运用组合与继承,实现代码和内存空间的有效复用。
|
25天前
|
机器学习/深度学习 存储 数据采集
Elasticsearch 与机器学习的集成
【9月更文第3天】Elasticsearch 不仅仅是一个强大的分布式搜索和分析引擎,它还是一个完整的数据平台,通过与 Kibana、Logstash 等工具结合使用,能够提供从数据采集、存储到分析的一站式解决方案。特别是,Elasticsearch 集成了机器学习(ML)功能,使得在实时数据流中进行异常检测和趋势预测成为可能。本文将详细介绍如何利用 Elasticsearch 的 ML 功能来检测异常行为或预测趋势。
32 4
|
1月前
|
jenkins 测试技术 持续交付
解锁.NET项目高效秘籍:从理论迷雾到实践巅峰,持续集成与自动化测试如何悄然改变游戏规则?
【8月更文挑战第28天】在软件开发领域,持续集成(CI)与自动化测试已成为提升效率和质量的关键工具。尤其在.NET项目中,二者的结合能显著提高开发速度并保证软件稳定性。本文将从理论到实践,详细介绍CI与自动化测试的重要性,并以ASP.NET Core Web API项目为例,演示如何使用Jenkins和NUnit实现自动化构建与测试。每次代码提交后,Jenkins自动触发构建流程,通过编译和运行NUnit测试确保代码质量。这种方式不仅节省了时间,还能快速发现并解决问题,推动.NET项目开发迈向更高水平。
37 8
|
1月前
|
存储 JavaScript 前端开发
Vue中通过集成Quill富文本编辑器实现公告的发布。Vue项目中vue-quill-editor的安装与使用【实战开发应用】
文章展示了在Vue项目中通过集成Quill富文本编辑器实现公告功能的完整开发过程,包括前端的公告发布、修改、删除操作以及后端的数据存储和处理逻辑。
Vue中通过集成Quill富文本编辑器实现公告的发布。Vue项目中vue-quill-editor的安装与使用【实战开发应用】
|
1月前
|
机器学习/深度学习 设计模式 人工智能
面向对象方法在AIGC和大数据集成项目中的应用
【8月更文第12天】随着人工智能生成内容(AIGC)和大数据技术的快速发展,企业面临着前所未有的挑战和机遇。AIGC技术能够自动产生高质量的内容,而大数据技术则能提供海量数据的支持,两者的结合为企业提供了强大的竞争优势。然而,要充分利用这些技术,就需要构建一个既能处理大规模数据又能高效集成机器学习模型的集成框架。面向对象编程(OOP)以其封装性、继承性和多态性等特点,在构建这样的复杂系统中扮演着至关重要的角色。
51 3
|
27天前
|
开发者 前端开发 开发框架
JSF与移动应用,开启全新交互体验!让你的Web应用轻松征服移动设备,让用户爱不释手!
【8月更文挑战第31天】在现代Web应用开发中,移动设备的普及使得构建移动友好的应用变得至关重要。尽管JSF(JavaServer Faces)主要用于Web应用开发,但结合Bootstrap等前端框架,也能实现优秀的移动交互体验。本文探讨如何在JSF应用中实现移动友好性,并通过示例代码展示具体实现方法。使用Bootstrap的响应式布局和组件可以确保JSF页面在移动设备上自适应,并提供友好的表单输入和提交体验。尽管JSF存在组件库较小和学习成本较高等局限性,但合理利用其特性仍能显著提升用户体验。通过不断学习和实践,开发者可以更好地掌握JSF应用的移动友好性,为Web应用开发贡献力量。
38 0
|
1月前
|
人工智能 Java API
JeecgBoot 低代码平台快速集成 Spring AI
Spring 通过 Spring AI 项目正式启用了 AI(人工智能)生成提示功能。本文将带你了解如何在 Jeecg Boot 应用中集成生成式 AI,以及 Spring AI 如何与模型互动,包含 RAG 功能。
97 3