• 精创网络
  • 精创网络
  • 首页
  • 产品优势
  • 产品价格
  • 产品功能
  • 新闻中心
  • 关于我们
  • 在线客服
  • 登录
  • DDoS防御和CC防御
  • 精创网络云防护,专注于大流量DDoS防御和CC防御。可防止SQL注入,以及XSS等网站安全漏洞的利用。
  • 免费试用
  • 新闻中心
  • 关于我们
  • 资讯动态
  • 帮助文档
  • 白名单保护
  • 常见问题
  • 政策协议
  • 帮助文档
  • SpringBoot整合Elasticsearch:方法与步骤详解
  • 来源:www.jcwlyf.com浏览:18更新:2026-01-10
  • 在开发中,Spring Boot 作为一款强大的开发框架,能够帮助开发者快速搭建应用程序。而 Elasticsearch 是一个分布式搜索和分析引擎,具有高性能、可扩展等特点。将 Spring Boot 与 Elasticsearch 整合,可以为应用程序提供强大的搜索和分析功能。下面详细介绍 Spring Boot 整合 Elasticsearch 的方法与步骤。

    1. 环境准备

    在进行整合之前,需要确保以下环境已经准备好:

    首先,Java 开发环境,建议使用 Java 8 及以上版本。可以通过命令

    java -version

    来检查 Java 版本。

    其次,Maven 或 Gradle 构建工具。如果使用 Maven,需要在项目的 pom.xml 文件中添加相关依赖;如果使用 Gradle,则在 build.gradle 文件中添加依赖。

    最后,安装并启动 Elasticsearch 服务。可以从 Elasticsearch 官方网站下载适合自己操作系统的版本,解压后进入 bin 目录,运行

    elasticsearch.bat

    (Windows 系统)或

    ./elasticsearch

    (Linux/Mac 系统)来启动 Elasticsearch。启动成功后,可以通过访问

    http://localhost:9200

    来验证 Elasticsearch 是否正常运行。

    2. 创建 Spring Boot 项目

    可以使用 Spring Initializr(

    https://start.spring.io/

    )来快速创建 Spring Boot 项目。在该网站上,选择项目的构建工具(Maven 或 Gradle)、Spring Boot 版本、项目的基本信息(如 Group、Artifact 等)。在依赖项中,添加 Spring Data Elasticsearch 依赖。然后点击 Generate 按钮下载项目压缩包,解压后导入到 IDE 中。

    如果使用命令行创建 Maven 项目,可以使用以下命令:

    mvn archetype:generate -DgroupId=com.example -DartifactId=spring-boot-elasticsearch -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

    然后在 pom.xml 文件中添加 Spring Data Elasticsearch 依赖:

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

    3. 配置 Elasticsearch

    在 application.properties 或 application.yml 文件中配置 Elasticsearch 的连接信息。如果使用 application.properties,可以添加以下配置:

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

    如果使用 application.yml,则配置如下:

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

    这里的 uris 指定了 Elasticsearch 服务的地址。如果 Elasticsearch 有用户名和密码认证,还需要添加相应的配置:

    spring.elasticsearch.rest.username=your_username
    spring.elasticsearch.rest.password=your_password

    4. 创建实体类

    创建一个 Java 实体类来映射 Elasticsearch 中的文档。例如,创建一个 Book 类:

    import org.springframework.data.annotation.Id;
    import org.springframework.data.elasticsearch.annotations.Document;
    import org.springframework.data.elasticsearch.annotations.Field;
    import org.springframework.data.elasticsearch.annotations.FieldType;
    
    @Document(indexName = "books")
    public class Book {
    
        @Id
        private String id;
    
        @Field(type = FieldType.Text)
        private String title;
    
        @Field(type = FieldType.Text)
        private String author;
    
        // 构造函数、Getter 和 Setter 方法
        public Book() {
        }
    
        public Book(String title, String author) {
            this.title = title;
            this.author = author;
        }
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getTitle() {
            return title;
        }
    
        public void setTitle(String title) {
            this.title = title;
        }
    
        public String getAuthor() {
            return author;
        }
    
        public void setAuthor(String author) {
            this.author = author;
        }
    }

    在这个类中,使用 @Document 注解指定了 Elasticsearch 中的索引名,使用 @Id 注解标记文档的唯一标识,使用 @Field 注解指定字段的类型。

    5. 创建 Repository 接口

    创建一个继承自 ElasticsearchRepository 的接口,用于对 Elasticsearch 进行数据操作。例如:

    import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
    
    public interface BookRepository extends ElasticsearchRepository<Book, String> {
    }

    这个接口继承自 ElasticsearchRepository,并指定了实体类 Book 和主键的类型 String。Spring Data Elasticsearch 会自动为这个接口生成实现类,提供基本的 CRUD 操作。

    6. 实现数据操作

    在 Service 层或 Controller 层中使用 BookRepository 进行数据操作。以下是一个简单的示例:

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service
    public class BookService {
    
        @Autowired
        private BookRepository bookRepository;
    
        public Book saveBook(Book book) {
            return bookRepository.save(book);
        }
    
        public List<Book> getAllBooks() {
            return (List<Book>) bookRepository.findAll();
        }
    
        public Book getBookById(String id) {
            return bookRepository.findById(id).orElse(null);
        }
    
        public void deleteBook(String id) {
            bookRepository.deleteById(id);
        }
    }

    在这个服务类中,通过 @Autowired 注解注入 BookRepository,然后实现了保存、查询所有、根据 ID 查询和删除图书的方法。

    7. 编写 Controller 层

    创建一个 Controller 类来处理 HTTP 请求,调用 Service 层的方法。例如:

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    
    import java.util.List;
    
    @RestController
    @RequestMapping("/books")
    public class BookController {
    
        @Autowired
        private BookService bookService;
    
        @PostMapping
        public Book saveBook(@RequestBody Book book) {
            return bookService.saveBook(book);
        }
    
        @GetMapping
        public List<Book> getAllBooks() {
            return bookService.getAllBooks();
        }
    
        @GetMapping("/{id}")
        public Book getBookById(@PathVariable String id) {
            return bookService.getBookById(id);
        }
    
        @DeleteMapping("/{id}")
        public void deleteBook(@PathVariable String id) {
            bookService.deleteBook(id);
        }
    }

    在这个 Controller 类中,使用 @RestController 注解将类标记为 RESTful 控制器,使用 @RequestMapping 注解指定请求的路径。通过不同的 HTTP 方法(如 @PostMapping、@GetMapping、@DeleteMapping)处理不同的请求。

    8. 测试整合效果

    启动 Spring Boot 应用程序,可以使用 Postman 或其他工具来测试 API。例如,发送一个 POST 请求到

    http://localhost:8080/books

    ,请求体中包含图书的信息:

    {
        "title": "Java Programming",
        "author": "John Doe"
    }

    然后发送一个 GET 请求到

    http://localhost:8080/books

    ,可以获取所有图书的信息。发送一个 GET 请求到

    http://localhost:8080/books/{id}

    ,可以根据 ID 获取指定图书的信息。发送一个 DELETE 请求到

    http://localhost:8080/books/{id}

    ,可以删除指定 ID 的图书。

    9. 高级查询

    除了基本的 CRUD 操作,Elasticsearch 还支持高级查询。可以在 BookRepository 接口中定义自定义的查询方法。例如,根据图书标题进行模糊查询:

    import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
    import java.util.List;
    
    public interface BookRepository extends ElasticsearchRepository<Book, String> {
        List<Book> findByTitleContaining(String title);
    }

    然后在 Service 层中添加相应的方法:

    public List<Book> findBooksByTitle(String title) {
        return bookRepository.findByTitleContaining(title);
    }

    在 Controller 层中添加对应的接口:

    @GetMapping("/search")
    public List<Book> searchBooks(@RequestParam String title) {
        return bookService.findBooksByTitle(title);
    }

    这样就可以通过发送 GET 请求到

    http://localhost:8080/books/search?title=Java

    来进行模糊查询。

    通过以上步骤,就完成了 Spring Boot 与 Elasticsearch 的整合。可以根据实际需求进一步扩展功能,如使用 Elasticsearch 的聚合功能、高亮显示搜索结果等。

  • 关于我们
  • 关于我们
  • 服务条款
  • 隐私政策
  • 新闻中心
  • 资讯动态
  • 帮助文档
  • 网站地图
  • 服务指南
  • 购买流程
  • 白名单保护
  • 联系我们
  • QQ咨询:189292897
  • 电话咨询:16725561188
  • 服务时间:7*24小时
  • 电子邮箱:admin@jcwlyf.com
  • 微信咨询
  • Copyright © 2026 All Rights Reserved
  • 精创网络版权所有
  • 皖ICP备2022000252号
  • 皖公网安备34072202000275号