SpringBoot整合ES-Elasticsearch

本文详述了如何在Spring Boot项目中整合Elasticsearch,实现CRUD操作,包括分页、滚动查询。通过添加Maven依赖,配置application.yml,创建索引对象,并介绍了三种操作ES数据的方式:实现ElasticsearchRepository接口、使用ElasticsearchRestTemplate和ElasticsearchOperations。文中还对比了ES深度分页与滚动查询的性能差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

本文介绍 Spring Boot 项目中整合 ElasticSearch 并实现 CRUD 操作,包括分页、滚动等功能。

添加Maven依赖

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

配置application.yml

spring:
  elasticsearch:
    rest:
      uris: 192.168.1.81:9200

创建索引对象

package com.practice.elkstudy.entity;

import cn.hutool.core.date.DateTime;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;

import java.util.Date;

/**
 * @Description : 文档模型
 * @Version : V1.0.0
 * @Date : 2021/12/22 14:08
 */
@Document(indexName = "article")
@Data
public class ArticleEntity {

    @Id
    private String id;

    private String title;

    private String content;

    private Integer userId;

    private Date createTime = DateTime.now();
}

SpringBoot操作ES数据的三种方式

  1. 实现ElasticsearchRepository接口
  2. 引入ElasticsearchRestTemplate
  3. 引入ElasticsearchOperations

实现索引对应的Repository

package com.practice.elkstudy.repository;

import com.practice.elkstudy.entity.ArticleEntity;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

/**
 * @Description : article数据操作接口
 * @Version : V1.0.0
 * @Date : 2021/12/22 14:18
 */
public interface ArticleRepository extends ElasticsearchRepository<ArticleEntity,String> {
}

文档操作

下面可以使用这个 ArticleRepository 来操作 ES 中的 Article 数据。
我们这里没有手动创建

### Spring Boot 整合 Elasticsearch JDBC 示例教程 #### 配置依赖项 为了使 Spring Boot 项目能够与 Elasticsearch 进行交互,需要引入相应的 Maven 或 Gradle 依赖。通常情况下会使用 `spring-boot-starter-data-elasticsearch` 来简化这一过程[^2]。 对于想要利用 JDBC 功能的情况,则还需要额外加入 `elasticsearch-jdbc` 的驱动程序作为依赖: ```xml <dependency> <groupId>org.xbib.tools</groupId> <artifactId>jdbc-elasticsearch-sql</artifactId> <version>7.10.0</version> </dependency> ``` #### 据库表结构设计 假设有一个名为 `employee` 的表格存储员工信息,在 MySQL 中创建该表之后,可以将其映射至 Elasticsearch 索引内以便后续查询操作更加高效快捷[^3]。 #### 编写实体类 定义 Java 类表示上述提到的据模型,并标注适当注解使其成为 JPA 实体对象;同时也可以考虑为字段添加索引属性以优化检索性能。 ```java @Entity @Table(name="employees") @Document(indexName = "emp", type="_doc") public class Employee { @Id private Long id; private String firstName; private String lastName; private Integer age; // getters and setters omitted... } ``` #### 自动化迁移脚本编写 借助 Logstash 插件或者其他 ETL 工具完成从关系型据库向 NoSQL 存储引擎之间的转换工作,确保每次更新都能及时反映到目标位置上[^4]。 #### 使用 RESTful API 发送请求 当一切准备就绪后就可以尝试发送 HTTP 请求给 Elasticsearch 节点来进行测试验证了。这里给出一段简单的命令用于获取销售部门所有成员的名字列表: ```bash curl -XPOST http://localhost:9200/emp/_search?pretty=true \ -H 'Content-Type: application/json' \ -d' { "_source": ["firstName","lastName"], "query":{ "match":{"department":"Sales"} } }' ``` 以上就是关于如何在 Spring Boot 应用里集成 Elasticsearch 并通过 JDBC 方式访问的一些基本指导说明。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值