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

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

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

学习

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

更多

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

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Elasticsearch 入门/课时/索引 CRUD
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综合练习

索引 CRUD

PUT/GET/DELETE 文档、bulk API。

30 分钟

索引 CRUD

对 Index 中的 Document 做增删改查;单条用 REST,批量用 _bulk API。实验数据从 MySQL cf_track 导出或手工构造,不写回 MySQL。

学习目标

  • 掌握 PUT / GET / DELETE 单文档操作
  • 使用 _bulk 批量导入
  • 理解 refresh、版本冲突与 _id 策略

核心内容

单文档 CRUD

# Create / Replace(指定 _id = slug)
curl -X PUT "localhost:9200/tracks/_doc/spring-boot-essentials" \
  -H "Content-Type: application/json" -d '
{
  "slug": "spring-boot-essentials",
  "title": "Spring Boot 入门",
  "category": "backend",
  "summary": "IoC、Web、JPA",
  "lessonCount": 16,
  "updatedAt": "2026-03-01T00:00:00Z"
}'

# Read
curl -s "localhost:9200/tracks/_doc/spring-boot-essentials?pretty"

# Partial update
curl -X POST "localhost:9200/tracks/_update/spring-boot-essentials" \
  -H "Content-Type: application/json" -d '
{ "doc": { "lessonCount": 17 } }'

# Delete
curl -X DELETE "localhost:9200/tracks/_doc/obsolete-track"

_id 与 MySQL 主键解耦:推荐用业务自然键 slug,便于 es-sync 幂等 upsert。

Bulk 批量导入

curl -X POST "localhost:9200/_bulk" -H "Content-Type: application/x-ndjson" --data-binary @- <<'EOF'
{"index":{"_index":"tracks","_id":"mongodb-essentials"}}
{"slug":"mongodb-essentials","title":"MongoDB 入门","category":"backend","summary":"文档模型与 Spring Data","lessonCount":12,"updatedAt":"2026-03-01T00:00:00Z"}
{"index":{"_index":"tracks","_id":"postgresql-essentials"}}
{"slug":"postgresql-essentials","title":"PostgreSQL 入门","category":"devops","summary":"JSONB 与 MVCC 实验","lessonCount":12,"updatedAt":"2026-03-01T00:00:00Z"}
EOF

响应中 "errors": false 表示全部成功;失败条目会带 error 原因(常见:Mapping 冲突)。

refresh 与可见性

写入后默认 近实时(约 1s refresh_interval)。调试可 ?refresh=true 强制立即可搜,勿在生产滥用。

curl -X GET "localhost:9200/tracks/_search?q=Spring&pretty"

与 REST API 的关系

CodeRoadMap 生产路径:GET /tracks 读 MySQL(spring-boot-essentials)。ES 索引供 搜索实验端点 或 Kibana 探索,见 。

es-practice

练习

  • bulk 导入至少 5 条 track 文档(含本 track slug)
  • 用 GET 验证一条,UPDATE 改 lessonCount,再 GET 确认
  • 写 NDJSON 文件,用 --data-binary @tracks.ndjson 导入

小结

PUT 幂等写入,bulk 高效灌数;_id 对齐 MySQL slug 便于同步。 下一课查询 DSL。

加载本节练习…
← 上一课Mapping 与字段类型下一课 →查询 DSL