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

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

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

学习

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

更多

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

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
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综合练习

综合练习

为课程 track 建搜索索引实验。

40 分钟

综合练习

本课串联 Mapping → 灌数 → 查询 → 聚合 → Spring 实验 API,为 CodeRoadMap 课程 track 建完整搜索索引。cf_track 仍在 MySQL,ES 只服务搜索实验。

学习目标

  • 完成 tracks 索引从 MySQL 导出到 ES 的全流程
  • 实现关键词搜索 + category facet 聚合
  • 可选:Spring Boot /api/lab/search/tracks 端点

核心内容

任务一:索引设计与全量导入

需求:将 MySQL cf_track 可搜索字段投影到 ES。

  1. 按 es-mapping PUT tracks index
  2. 从 MySQL 导出并 _bulk 导入(es-sync):
SELECT slug, title, summary, category, level, lesson_count, updated_at
FROM cf_track;

至少导入 10 条,含 spring-boot-essentials、mongodb-essentials、postgresql-essentials、elasticsearch-essentials。

任务二:搜索 + Facet

需求:模拟站内搜索框 + 左侧分类筛选。

curl -s -X POST "localhost:9200/tracks/_search" -H "Content-Type: application/json" -d '
{
  "query": {
    "bool": {
      "must": [
        { "multi_match": { "query": "数据库", "fields": ["title^2", "summary"] } }
      ],
      "filter": []
    }
  },
  "aggs": {
    "categories": { "terms": { "field": "category", "size": 20 } }
  },
  "highlight": { "fields": { "title": {}, "summary": {} } },
  "size": 10
}'

变体:加 filter: [{ "term": { "category": "backend" } }],观察 hit 数与 agg 变化。

任务三(可选):Spring 实验 API

在 spring-boot-essentials 项目:

  • 新增 TrackDocument、TrackSearchRepository(es-spring)
  • GET /api/lab/search/tracks?q=&category= 返回 JSON + facet
  • 不修改 现有 GET /tracks(MySQL)

Kibana Discover 验证(es-kibana)。验收:随机 3 条 slug 与 MySQL 一致;facet 计数与 GROUP BY category 吻合。

练习

  • 完成任务一、二;保存 Dev Tools 查询 JSON
  • 写 200 字:为何 REST /tracks 仍读 MySQL 而搜索走 ES
  • 可选:实现 Spring 实验端点并用 curl 测通
  • 小结

    MySQL 管权威、ES 管搜索实验——全链路练完即掌握 ES 在本站的角色。 恭喜完成 Elasticsearch 入门 track!深入运维见 ELK 路线;持久化见 mongodb-essentials 与 postgresql-essentials。

    加载本节练习…
    ← 上一课Kibana 可视化