一文读懂SpringBoot整合Elasticsearch(一)

这篇具有很好参考价值的文章主要介绍了一文读懂SpringBoot整合Elasticsearch(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

(本篇文章主要介绍Spring Boot如何整合Elasticsearch,包括基本配置、数据操作、搜索功能等方面。)

一、前言

Elasticsearch是一款全文搜索引擎,可用于快速、准确地存储、搜索和分析大量数据。而Spring Boot是一款快速开发框架,它提供了简单易用的方式来构建Web应用程序。本文将介绍如何使用Spring Boot整合Elasticsearch,实现快速、高效地存储和搜索数据的功能。

二、环境准备

在开始整合Elasticsearch之前,需要确保已经安装了Java开发环境和Elasticsearch服务。可以从官方网站下载最新版本的Java和Elasticsearch。

三、引入依赖

Spring Boot整合Elasticsearch需要引入以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

四、基本配置

在application.properties文件中添加以下配置信息:

kotlinCopy codespring.data.elasticsearch.cluster-name=my-application
spring.data.elasticsearch.cluster-nodes=localhost:9300

其中,cluster-name是Elasticsearch集群的名称,cluster-nodes是Elasticsearch服务的地址和端口号。

数据操作

  1. 创建实体类

首先需要创建一个实体类,用来表示要存储在Elasticsearch中的数据。例如,创建一个名为Book的实体类,包含id、title、author、content等属性。

public class Book {
    private Long id;
    private String title;
    private String author;
    private String content;
    //省略getter和setter方法
}

2 创建ElasticsearchRepository

在Spring Boot中,可以使用ElasticsearchRepository来操作Elasticsearch。创建一个名为BookRepository的接口,继承ElasticsearchRepository,指定实体类和主键类型。例如:

public interface BookRepository extends ElasticsearchRepository<Book, Long> {
}

3 数据操作

现在可以使用BookRepository来对Elasticsearch中的数据进行操作。例如,可以使用save方法将一个Book对象保存到Elasticsearch中。

@Autowired
private BookRepository bookRepository;

Book book = new Book();
book.setId(1L);
book.setTitle("Java编程思想");
book.setAuthor("Bruce Eckel");
book.setContent("Java编程思想是一本Java经典著作。");
bookRepository.save(book);

四、搜索功能

  1. 创建查询接口

首先需要创建一个查询接口,用来定义查询方法。例如,创建一个名为BookService的接口,包含一个名为search的方法,用来根据关键词查询数据。

public interface BookService {
    List<Book> search(String keyword);
}

2 创建查询实现类

接着需要创建一个查询实现类,实现BookService接口中的search方法。在实现类中注入BookRepository,使用它来查询Elasticsearch中的数据。

@Service
public class BookServiceImpl implements BookService {
    @Autowired
    private BookRepository bookRepository
  Override
public List<Book> search(String keyword) {
    SearchQuery searchQuery = new NativeSearchQueryBuilder()
            .withQuery(QueryBuilders.queryStringQuery(keyword))
            .build();
    return bookRepository.search(searchQuery).getContent();
}

在上面的代码中,首先创建了一个SearchQuery对象,它表示查询条件。使用NativeSearchQueryBuilder来构建查询条件,其中withQuery方法接受一个QueryBuilder对象作为参数,用来指定查询语句。这里使用了queryStringQuery方法来构建一个基于关键词的查询语句。 然后,使用bookRepository.search方法来执行查询,返回一个Page对象。调用getContent方法可以获取查询结果。

3. 测试搜索功能

现在可以测试搜索功能了。例如,执行以下代码:

@Autowired
private BookService bookService;

List<Book> books = bookService.search("Java");
for (Book book : books) {
System.out.println(book.getTitle());
}

这段代码会查询所有标题包含“Java”的图书,并将它们的标题打印出来。

五、总结

本文介绍了Spring Boot如何整合Elasticsearch,包括基本配置、数据操作、搜索功能等方面。通过Spring Boot整合Elasticsearch,可以方便快捷地实现数据存储和搜索功能。

六、常见问题解决

在整合Elasticsearch的过程中,可能会遇到一些常见的问题。下面是一些解决方法:

  1. Elasticsearch服务无法连接

如果在运行Spring Boot应用程序时遇到“Elasticsearch服务无法连接”的错误,请确保已经启动Elasticsearch服务,并检查application.properties文件中的cluster-nodes配置是否正确。

2 无法创建索引

如果在使用ElasticsearchRepository保存数据时遇到“无法创建索引”的错误,请检查实体类的注解是否正确,例如是否添加了@Document注解,并指定了indexName和type。

3 搜索结果为空

如果在执行搜索时返回空结果,请检查查询条件是否正确。可以使用Kibana工具来查看Elasticsearch中的数据,并尝试使用Kibana来执行查询语句,以确定查询语句是否正确。

4 分页查询问题

如果想要实现分页查询功能,可以使用Spring Data提供的Pageable接口来实现。例如:

Pageable pageable = PageRequest.of(pageNumber, pageSize);
SearchQuery searchQuery = new NativeSearchQueryBuilder()
        .withQuery(QueryBuilders.queryStringQuery(keyword))
        .withPageable(pageable)
        .build();
return bookRepository.search(searchQuery).getContent();

这里使用了PageRequest.of方法来创建一个Pageable对象,并将它传递给NativeSearchQueryBuilder的withPageable方法。

七、总结

本文介绍了Spring Boot如何整合Elasticsearch,包括基本配置、数据操作、搜索功能等方面。通过Spring Boot整合Elasticsearch,可以方便快捷地实现数据存储和搜索功能。在实践中可能会遇到一些常见问题,需要注意解决。

八、参考资料

  1. Spring Data Elasticsearch官方文档:https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/
  2. Elasticsearch官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
  3. Spring Boot官方文档:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/
  4. Spring官方文档:https://docs.spring.io/spring/docs/current/spring-framework-reference/index.html
  5. Kibana官方文档:https://www.elastic.co/guide/en/kibana/current/index.html

九、结语

本文通过实例演示了Spring Boot如何整合Elasticsearch,并介绍了基本配置、数据操作、搜索功能等方面的知识。通过这些内容,读者可以快速上手使用Spring Boot和Elasticsearch来构建数据存储和搜索应用程序。

当然,本文只是一个入门级别的介绍,读者可以深入学习Spring Boot和Elasticsearch的更多知识,来构建更为复杂的应用程序。希望读者在学习过程中能够积极思考,不断提高自己的技能和能力。

一文读懂SpringBoot整合Elasticsearch(一)

 文章来源地址https://www.toymoban.com/news/detail-415615.html

到了这里,关于一文读懂SpringBoot整合Elasticsearch(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 初识 Elasticsearch 应用知识,一文读懂 Elasticsearch 知识文集(3)

    🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论⭐收藏 🔎 Elasticsearch 领域知识 🔎 链接 专栏 Elasticsearch 专业知识学习一 Elasticsearch专栏

    2024年01月20日
    浏览(36)
  • 一文读懂Springboot如何使用ChatGPT

    封装了丰富的OpenAI 接口可直接使用 申请外国虚拟信用卡【Depay】 充值USTD虚拟货币【欧易】 USTD充值到Depay Depay 的USTD 转 USD虚拟货币 将USD货币存入虚拟信用卡 通过虚拟信用卡充值到ChatGPT 优先ChatGPT试用用户 畅享丝滑的响应速度 优先体验新功能 原文 非常感谢你从头到尾阅读

    2024年02月02日
    浏览(31)
  • 揭秘Elasticsearch:一文读懂分布式搜索与分析引擎的核心概念

            Elasticsearch 是一个开源、分布式、实时搜索和分析引擎,专门用于处理大规模数据的快速检索与分析。它建立在 Apache Lucene 的基础上,但提供了比 Lucene 更为丰富的功能和友好的RESTful API 接口,使得开发者能够轻松地进行全文搜索、结构化搜索以及对海量数据进行

    2024年02月19日
    浏览(37)
  • GitHub Copilot 使用攻略,本篇文章作者是GPT-3.5

    引言: 在软件开发领域,编写高质量的代码是开发者们的永恒追求。然而,传统的编码过程常常耗费大量时间和精力,而且在遇到复杂的问题时,开发者可能会面临困惑和不确定性。为了解决这些挑战,GitHub推出了一款强大的工具——GitHub Copilot,它利用人工智能技术提供智

    2024年02月16日
    浏览(45)
  • 一文读懂ElasticSearch中字符串keyword和text类型区别_elasticsearch text和keyword

    可以看到,这里的数据被ES分为了4个词分别是“广” ,“东”,“深”,“圳”。同样,第二条数据也被分为了“广” ,“西”,“南”,“宁”。这里可以理解为 keyword类型存储的数据为“广东深圳”(存储未分词的原始数据) text类型存储的数据为“广” ,“东”,“深

    2024年04月16日
    浏览(34)
  • 一文读懂Springboot如何使用ChatGPT【OpenAI官方Springboot依赖,极强接口封装】

    封装了丰富的OpenAI 接口可直接使用 申请外国虚拟信用卡【Depay】 充值USTD虚拟货币【欧易】 USTD充值到Depay Depay 的USTD 转 USD虚拟货币 将USD货币存入虚拟信用卡 通过虚拟信用卡充值到ChatGPT 优先ChatGPT试用用户 畅享丝滑的响应速度 优先体验新功能 原文 非常感谢你从头到尾阅读

    2024年02月07日
    浏览(27)
  • DevOps系列文章 之 SpringBoot整合GitLab-CI实现持续集成

    在企业开发过程中,我们开发的功能或者是修复的BUG都需要部署到服务器上去,而这部分部署操作又是重复且繁琐的工作,GitLab-CI 持续集成为我们解决了这一痛点,将重复部署的工作自动化,大大的节省了程序员们的宝贵时间。本文详细讲述了 GitLab-CI 持续集成的安装、部署

    2024年02月13日
    浏览(35)
  • Elasticsearch基础,SpringBoot整合Elasticsearch

    Elasticsearch,简称为es,es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通

    2024年01月19日
    浏览(34)
  • ElasticSearch8 - SpringBoot整合ElasticSearch

    springboot 整合 ES 有两种方案,ES 官方提供的 Elasticsearch Java API Client 和 spring 提供的 [Spring Data Elasticsearch](Spring Data Elasticsearch) 两种方案各有优劣 Spring:高度封装,用着舒服。缺点是更新不及时,有可能无法使用 ES 的新 API ES 官方:更新及时,灵活,缺点是太灵活了,基本是一

    2024年03月25日
    浏览(85)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包