SpringBoot 数据存储实战指南

 更新时间:2026年03月24日 09:48:00   作者:程序员西西  
Elasticsearch是一个基于Apache Lucene开发的的搜索服务,提供了一个分布式多用户能力的全文搜索引擎,本文介绍如何在SpringBoot项目中整合ElasticSearch来完成数据的存储,感兴趣的朋友跟随小编一起看看吧

Elasticsearch是一个基于Apache Lucene开发的的搜索服务,提供了一个分布式多用户能力的全文搜索引擎,并基于RESTful web接口。支持结构化搜索、数据分析、复杂的语言处理、地理位置和对象间关联关系等功能。那么如何在SpringBoot项目中整合ElasticSearch来完成数据的存储呢?下面我们就来看看。

这里需要特别说明在高版本的ElasticSearch对于数据的处理方式与低版本的处理方式是不同的,并且,在Spring Boot中所支持的ElasticSearch客户端版本也是有所差异的。这里演示的是基于 Spring Boot 2.1.4.RELEASE 版本和ElasticSearch 6.8.0的版本处理方式。

依赖和配置

添加Elasticsearch的依赖到pom.xml文件中。

<parent>
    <artifactId>spring-boot-parent</artifactId>
    <groupId>org.springframework.boot</groupId>
    <version>2.1.4.RELEASE</version>
</parent>
```js
```
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

在配置文件文件中配置ElasticSearch的连接

spring.data.elasticsearch.cluster-name=my-cluster
spring.data.elasticsearch.cluster-nodes=192.168.1.202:9300

这里需要注意,在高版本的SpringBoot配置中已经不支持这样的配置操作,需要注意的实,在这个配置中如果是通过ELK调用则添加的端口是9200,如果是通过Java程序调用则配置的连接端口是9300。

具体实现

@Document(indexName = "my_index", type = "my_type")
public class MyDocument {
    @Id
    private String id;
    private String name;
    private String description;
    // 省略构造函数、getter和setter
}

继承ElasticsearchRepository接口实现数据访问层代码

public interface MyDocumentRepository 
extends ElasticsearchRepository<MyDocument, String> {
}

编写服务层代码

@Service
public class MyDocumentService {
    @Autowired
    private MyDocumentRepository repository;
    public MyDocument save(MyDocument document) {
        return repository.save(document);
    }
    public Iterable<MyDocument> findAll() {
        Iterable<MyDocument> all = repository.findAll();
        return all;
    }
    public MyDocument findById(String id) {
        return repository.findById(id).orElse(null);
    }
    public void deleteById(String id) {
        repository.deleteById(id);
    }
}

编写Controller类进行测试

@RestController
@RequestMapping("/documents")
public class MyDocumentController {
    @Autowired
    private MyDocumentService service;
    @PostMapping
    public MyDocument create(@RequestBody MyDocument document) {
        return service.save(document);
    }
    @GetMapping
    public Iterable<MyDocument> getAll() {
        Iterable<MyDocument> iterable = service.findAll();
        return iterable;
    }
    @GetMapping("/{id}")
    public MyDocument getById(@PathVariable String id) {
        return service.findById(id);
    }
    @DeleteMapping("/{id}")
    public void deleteById(@PathVariable String id) {
        service.deleteById(id);
    }
}

以上代码示例演示了如何使用Spring Boot整合Elasticsearch实现数据存储。

调用接口进行测试

获取列表

总结

在上面的例子中,通过SpringBoot 2.1.4与ElasticSearch6.8.0完成了整合,如果想要适配更高版本的ElasticSearch或者是Spring Boot ,在过程中一定注意对于版本兼容性的选择。

到此这篇关于SpringBoot 数据存储实战指南的文章就介绍到这了,更多相关SpringBoot 数据存储内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java泛型类、重构的使用及说明

    Java泛型类、重构的使用及说明

    文章介绍了泛型类和重构的概念、原理和应用,泛型类是一种参数化类型,可以操作不同数据类型,而重构是通过对已有代码进行修改,改善其设计、结构和可读性的过程,重构可以帮助提高代码质量、简化理解与调试、优化性能、改进设计、提高团队协作并扩展功能
    2025-11-11
  • Spring自定义参数解析器代码实例

    Spring自定义参数解析器代码实例

    这篇文章主要介绍了Spring自定义参数解析器代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • SpringBoot注册第三方Bean的方法总结

    SpringBoot注册第三方Bean的方法总结

    众所周知,SpringBoot默认会扫描启动类所在的包及其子包,一般我们都是在需要的类上通过注解的方式去将Bean注册交给IOC进行管理,但是注册第三方Bean的方案却不支持,所以本文给大家介绍了SpringBoot注册第三方Bean的方法,需要的朋友可以参考下
    2024-01-01
  • 使用@value注解取不到application.xml配置文件中的值问题

    使用@value注解取不到application.xml配置文件中的值问题

    这篇文章主要介绍了使用@value注解取不到application.xml配置文件中的值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • SpringBoot集成Docling文档解析服务的完全指南

    SpringBoot集成Docling文档解析服务的完全指南

    本文从入门到精通,详细介绍如何在 SpringBoot项目中集成Docling文档解析服务,包含环境搭建、配置详解、661行核心代码逐行解析、请求参数详解、返回数据处理、向量存储集成、生产级优化方案和完整测试用例,看完本文即可独立实现企业级文档解析功能
    2026-05-05
  • Java for循环Map集合优化实现解析

    Java for循环Map集合优化实现解析

    这篇文章主要介绍了Java for循环Map集合优化实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • IDEA性能优化方法解决卡顿问题

    IDEA性能优化方法解决卡顿问题

    本文主要介绍了如何在不升级电脑配置的情况下通过修改IntelliJIDEA的设置来优化其性能,从而提升开发效率
    2024-12-12
  • Java Lambda表达式与引用类浅析

    Java Lambda表达式与引用类浅析

    Lambda表达式是Java SE8中一个重要的新特性,允许通过表达式来代替功能接口。本文将通过一些简单的示例和大家讲讲Lamda表达式的使用,感兴趣的可以了解一下
    2023-01-01
  • Java中将String类型转换为int类型的几种常见方法

    Java中将String类型转换为int类型的几种常见方法

    在java中经常会遇到需要对数据进行类型转换的场景,这篇文章主要给大家介绍了关于Java中将String类型转换为int类型的几种常见方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • SpringBoot整合Spring Boot Admin实现服务监控的方法

    SpringBoot整合Spring Boot Admin实现服务监控的方法

    这篇文章主要介绍了SpringBoot整合Spring Boot Admin实现服务监控,内容包括Server端服务开发,Client端服务开发其中Spring Boot Admin还可以对其监控的服务提供告警功能,如服务宕机时,可以及时以邮件方式通知运维人员,感兴趣的朋友跟随小编一起看看吧
    2022-03-03

最新评论