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综合练习

分片与扩容

主分片数、副本、reindex 直觉。

30 分钟

分片与扩容

Elasticsearch 通过 主分片 水平扩展数据,副本 扩展读与容错。主分片数在创建 index 时确定,后续只能 reindex 调整——规划比 MySQL 分表更早。

学习目标

  • 理解主分片数、副本数对容量与性能的影响
  • 掌握 reindex 与 alias 切换的基本流程
  • 建立单节点实验 vs 生产集群的预期差异

核心内容

分片参数

curl -X PUT "localhost:9200/tracks_v1" -H "Content-Type: application/json" -d '
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1
  }
}'
参数含义调整方式
number_of_shards主分片数,数据哈希路由创建后不可改(除 shrink/split 特殊 API)
number_of_replicas每主分片的副本数_settings 可动态改

单节点实验:shards: 1, replicas: 0(es-install)。三节点集群:replicas: 1 可达 green。

路由直觉

_id / routing → hash → shard_id ∈ [0, number_of_shards)

同 slug 作 _id 保证同一 track 始终在同一分片,更新局部性好。

扩容路径

垂直:加 CPU/内存/SSD——先榨单节点(注意 ES_JAVA_OPTS 不超过物理内存一半)。

水平:加 Node 进 Cluster → 自动 rebalance 分片 → 提高吞吐。

数据量小(本站 track 数百条)无需 多分片;学 reindex 流程即可。

Reindex 流程

主分片数定错或 Mapping 变更(es-mapping):

流程:建 tracks_v2 → _reindex 从 v1 复制 → _aliases 原子切换。应用只认 alias tracks(es-spring)。权威数据扩容仍以 MySQL 为主(spring-boot-essentials);ES 随搜索 QPS 扩展。

练习

  • 查看 tracks 的 _settings 与 _cat/shards/tracks?v
  • 解释 3 主分片 + 2 节点时为何可能 yellow
  • 列出何时本站 track 索引 多分片
不必

小结

主分片创建时定死,副本可调;变更结构用 reindex + alias。 下一课 Kibana 可视化。

加载本节练习…
← 上一课数据同步下一课 →Kibana 可视化