CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Elasticsearch 入门/课时/Spring Data Elasticsearch
RawBlame
课时目录12 节

Elasticsearch 入门

  1. 01搜索引擎是什么
  2. 02核心概念
  3. 03Docker 单节点
  4. 04Mapping 与字段类型
  5. 05索引 CRUD
  6. 06查询 DSL
  7. 07聚合入门
  8. 08Spring Data Elasticsearch
  9. 09数据同步
  10. 10分片与扩容
  11. 11Kibana 可视化
  12. 12综合练习

Spring Data Elasticsearch

ElasticsearchRepository、@Document。

40 分钟

Spring Data Elasticsearch

Spring Data Elasticsearch 提供 @Document、ElasticsearchRepository 与 ElasticsearchOperations,用法接近 JPA。适合在 spring-boot-essentials 项目中 附加 搜索能力,不替换 MySQL 主库。

学习目标

  • 添加依赖并配置 spring.elasticsearch.uris
  • 定义 @Document 实体与 Repository
  • 实现实验性搜索 API,与 TrackController 分离

核心内容

依赖

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

Boot 3.x 默认 Elasticsearch Java API Client;版本需与 ES 8 服务端兼容。

配置

spring:
  elasticsearch:
    uris: http://localhost:9200
  datasource:
    url: jdbc:mysql://localhost:3306/codeforge   # 保持不变

切勿 用 ES 替换 spring.datasource;与 mongodb-essentials 双数据源策略相同。

实体与 Repository

@Document(indexName = "tracks")
@Data
public class TrackDocument {
    @Id
    private String slug;
    @Field(type = FieldType.Text, analyzer = "standard")
    private String title;
    @Field(type = FieldType.Text)
    private String summary;
    @Field(type = FieldType.Keyword)
    private String category;
    @Field(type = FieldType.Integer)
    private Integer lessonCount;
}

public interface TrackSearchRepository
        extends ElasticsearchRepository<TrackDocument, String> {
    List<TrackDocument> findByCategory(String category);
}

复杂 DSL 注入 ElasticsearchOperations 构建 multi_match。实验端点 GET /api/lab/search/tracks?q= 读 ES;生产 GET /tracks 仍 JPA + MySQL。Track 与 TrackDocument 不共享 @Entity,变更 cf_track 后异步更新 ES(es-sync)。

练习

  • 创建 TrackDocument + Repository,启动连接 localhost:9200
  • 实现 /api/lab/search/tracks?q= 返回 slug、title、score
  • 对比 TrackRepository(JPA)与 TrackSearchRepository 接口差异
  • 小结

    @Document + Repository = Boot 集成 ES 标准路径;MySQL JPA 仍管权威数据。 下一课 MySQL → ES 同步策略。

    加载本节练习…
    ← 上一课聚合入门下一课 →数据同步