SpringBoot集成ElasticSearch实现搜索功能

 更新时间:2025年03月24日 09:13:58   作者:阿里渣渣java研发组-群主  
本文主要介绍了Spring Boot 集成ElasticSearch实现搜索功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

引言

在现代Web应用中,搜索功能是一个非常重要的特性。ElasticSearch是一个分布式的搜索和分析引擎,能够快速地存储、搜索和分析大量数据。Spring Data ElasticSearch提供了与ElasticSearch集成的简便方式。本文将介绍如何在Spring Boot中集成ElasticSearch,实现基本的搜索功能。

什么是ElasticSearch

ElasticSearch是一个基于Lucene的开源搜索引擎,支持全文搜索、结构化搜索和分析,并能够处理海量数据。它提供了一个分布式多租户能力的全文搜索引擎,具有高度的可扩展性和实时性。

添加依赖

在Spring Boot项目中添加ElasticSearch的依赖。在pom.xml文件中添加以下依赖项:

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

配置ElasticSearch

application.properties文件中配置ElasticSearch连接信息:

spring.elasticsearch.rest.uris=http://localhost:9200

创建实体类

创建一个名为Article.java的实体类:

package com.example.demo;

import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;

@Document(indexName = "articles")
public class Article {

    @Id
    private String id;
    private String title;
    private String content;

    // Getters and setters
}

创建Repository接口

创建一个名为ArticleRepository.java的接口,继承ElasticsearchRepository

package com.example.demo;

import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

import java.util.List;

public interface ArticleRepository extends ElasticsearchRepository<Article, String> {
    List<Article> findByTitleContaining(String title);
}

创建服务层

创建一个名为ArticleService.java的服务类:

package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ArticleService {

    @Autowired
    private ArticleRepository articleRepository;

    public Article saveArticle(Article article) {
        return articleRepository.save(article);
    }

    public List<Article> findArticlesByTitle(String title) {
        return articleRepository.findByTitleContaining(title);
    }
}

创建控制层

创建一个名为ArticleController.java的控制器类:

package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/articles")
public class ArticleController {

    @Autowired
    private ArticleService articleService;

    @PostMapping
    public Article saveArticle(@RequestBody Article article) {
        return articleService.saveArticle(article);
    }

    @GetMapping
    public List<Article> findArticles(@RequestParam String title) {
        return articleService.findArticlesByTitle(title);
    }
}

运行ElasticSearch

确保ElasticSearch已经在本地运行。如果还没有安装ElasticSearch,可以从ElasticSearch官网下载并安装。

测试搜索功能

启动Spring Boot应用后,可以通过以下API进行测试:

保存文章:POST /articles,请求体示例:

{
    "title": "Spring Boot with ElasticSearch",
    "content": "Integrating ElasticSearch with Spring Boot..."
}

搜索文章:GET /articles?title=Spring,你将会得到包含“Spring”关键字的文章列表。

结论

通过本文的学习,你已经掌握了如何在Spring Boot中集成ElasticSearch,并实现基本的搜索功能。

到此这篇关于Spring Boot 集成ElasticSearch实现搜索功能的文章就介绍到这了,更多相关Spring Boot ElasticSearch搜索内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java并发线程之线程池的知识总结

    Java并发线程之线程池的知识总结

    这篇文章主要介绍了Java并发线程之线程池的知识总结,帮助大家更好的理解和学习Java并发线程的相关内容,感兴趣的朋友可以了解下
    2021-01-01
  • Spring + mybatis + mysql使用事物的几种方法总结

    Spring + mybatis + mysql使用事物的几种方法总结

    这篇文章主要给大家总结介绍了关于Spring + mybatis + mysql使用事物的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-05-05
  • java使用WatchService监控文件夹示例

    java使用WatchService监控文件夹示例

    本篇文章主要介绍了java使用WatchService监控文件夹示例的资料,这里整理了详细的代码,有需要的小伙伴可以参考下。
    2017-02-02
  • 解决idea2020.2遇到pom.xml文件报错maven插件tomcat7的问题

    解决idea2020.2遇到pom.xml文件报错maven插件tomcat7的问题

    这篇文章主要介绍了idea2020.2遇到pom.xml文件报错maven插件tomcat7的问题,本文给大家分享解决方法,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Java 实现Redis存储复杂json格式数据并返回给前端

    Java 实现Redis存储复杂json格式数据并返回给前端

    这篇文章主要介绍了Java 实现Redis存储复杂json格式数据并返回给前端操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 带你快速搞定java多线程(2)

    带你快速搞定java多线程(2)

    这篇文章主要介绍了java多线程编程实例,分享了几则多线程的实例代码,具有一定参考价值,加深多线程编程的理解还是很有帮助的,需要的朋友可以参考下
    2021-07-07
  • 详解SpringBoot之集成Spring AOP

    详解SpringBoot之集成Spring AOP

    本篇文章主要介绍了详解SpringBoot之集成Spring AOP,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Mybatis以main方法形式调用dao层执行代码实例

    Mybatis以main方法形式调用dao层执行代码实例

    这篇文章主要介绍了Mybatis以main方法形式调用dao层执行代码实例,MyBatis 是一款优秀的持久层框架,MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作,需要的朋友可以参考下
    2023-08-08
  • Springboot的maven间接依赖的实现

    Springboot的maven间接依赖的实现

    这篇文章主要介绍了Springboot的maven间接依赖的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • 教你使用java实现去除各种空格

    教你使用java实现去除各种空格

    本文给大家汇总介绍了5种java中去除空格的方法,分别是String.trim()、str.replace(" ", "");、replaceAll(" +","");以及自定义的remove函数,非常的简单实用,需要的小伙伴可以参考下。
    2015-03-03

最新评论