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搜索内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot 钩子接口的实现代码

    SpringBoot 钩子接口的实现代码

    本文主要介绍了SpringBoot 钩子接口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • 重写Java中的equals方法介绍

    重写Java中的equals方法介绍

    这篇文章主要介绍了重写Java中的equals方法介绍,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Java SE求解汉诺塔问题的示例代码

    Java SE求解汉诺塔问题的示例代码

    汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。本文将用Java SE求解这一问题,感兴趣的可以学习一下
    2022-03-03
  • Java之如何获取泛型参数

    Java之如何获取泛型参数

    在Java开发中,获取泛型参数一般有两种方法:第一种是通过JDK自带的API,主要利用反射机制来获取类的泛型信息;第二种方法是借助Spring框架提供的GenericTypeResolver工具类,这种方式更加简便,这两种方法都能有效地帮助开发者在运行时获取到泛型参数
    2024-09-09
  • struts升级到2.5.2遇到的问题及解决方案(推荐)

    struts升级到2.5.2遇到的问题及解决方案(推荐)

    原来的版本是2.3.x,由于安全原因需要升级到2.5.2。但是在升级过程中遇到各种各样的问题,下面小编给大家带来了struts升级到2.5.2遇到的问题及解决方案,需要的朋友参考下吧
    2016-11-11
  • JavaWeb中struts2实现文件上传下载功能实例解析

    JavaWeb中struts2实现文件上传下载功能实例解析

    这篇文章主要介绍了JavaWeb中struts2文件上传下载功能的实现,在Web应用系统开发中,文件上传和下载功能是非常常用的功能,需要的朋友可以参考下
    2016-05-05
  • 详解Eclipse安装SVN插件的两种方法

    详解Eclipse安装SVN插件的两种方法

    这篇文章主要介绍了详解Eclipse 安装 SVN 插件的两种方法,详细的介绍了这两种安装方法,具有一定的参考价值,有兴趣的可以了解一下
    2018-01-01
  • SpringBoot异步实现 的8种方式

    SpringBoot异步实现 的8种方式

    在同步操作中,执行到 发送短信 的时候,我们必须等待这个方法彻底执行完才能执行 赠送积分 这个操作,如果 赠送积分 这个动作执行时间较长,发送短信需要等待,这就是典型的同步场景,这篇文章主要介绍了SpringBoot异步实现 的8种方式,需要的朋友可以参考下
    2023-11-11
  • java二叉查找树的实现代码

    java二叉查找树的实现代码

    这篇文章主要为大家详细介绍了java二叉查找树的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found的解决方案(亲测可用)

    Plugin ‘org.springframework.boot:spring-boot-maven-plug

    这篇文章给大家介绍了Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found的解决方案,亲测可用,文中给出了两种解决方法,需要的朋友可以参考下
    2024-01-01

最新评论