核心概念
Index、Document、Shard、Replica、Node。
35 分钟
核心概念
Elasticsearch 用 近关系 的术语组织数据:Index 像「库表」,Document 像「行」,但底层是 JSON 文档 + 倒排索引,无 JOIN。
学习目标
- 掌握 Index、Document、Mapping、Shard、Replica、Node
- 理解 Cluster 健康状态与分片路由直觉
- 对照 MySQL 表模型,避免把 ES 当 RDBMS 用
核心内容
术语对照
| ES | 直觉类比 | MySQL(本站) |
|---|---|---|
| Cluster | 整个 ES 部署 | 实例 + 库集合 |
| Node | 单台 ES 进程 | mysqld 进程 |
| Index | 逻辑命名空间 | database.table |
| Document | 一条 JSON | 一行 |
| Mapping | 字段类型/schema | DDL |
| Shard | 水平分片 | 分库分表片 |
| Replica | 副本分片 | 读副本 |
Index 与 Document
# 索引一条「课程」文档(实验 index 名 tracks)
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 与 MySQL 集成"
}'
_id 可指定为 slug,便于与 MySQL cf_track.slug 对齐;权威字段仍以 MySQL 为准。
Shard 与 Replica
Index "tracks"
├── Primary Shard 0 → Replica 0
└── Primary Shard 1 → Replica 1
- Primary Shard:写入路由目标,创建 index 时数量固定(默认 1,生产需规划)
- Replica:副本,提升读吞吐与容错;主分片挂掉时提升副本为主
单节点 Docker 实验通常 number_of_replicas: 0;集群内至少 1 副本才有 HA 意义。
Cluster 健康
curl -s "localhost:9200/_cluster/health?pretty"
# green : 所有主/副本可用
# yellow : 主分片 OK,副本未分配(单节点常见)
# red : 部分主分片不可用,需排查
与 MySQL / Mongo 的关系
- MySQL
cf_track:事务、外键、REST/tracks数据源(spring-boot-essentials) - MongoDB:嵌套文档、高写入日志(mongodb-essentials)
- :从上述库 可搜索快照,见