Elasticsearch 的工程问题通常横跨 Lucene、分片与副本、JVM/原生内存、磁盘、查询模型和集群运维。这个专题按“原理—源码—调优—事故”组织内容。
这个专题解决什么问题
- 如何理解 Elasticsearch、Lucene、索引、分片、副本和集群状态之间的关系。
- 如何选择 mapping、routing、nested/parent-child、分片数量和存储字段方案。
- 如何分析查询、Fetch、大文档、深分页和写入刷新带来的性能成本。
- 如何阅读节点启动、写入、检索、GET、更新和分片恢复等关键源码流程。
- 如何从磁盘、mmap、堆外内存和分片设计中定位生产事故根因。
适合哪些读者
适合搜索平台研发、后端工程师、数据平台工程师、SRE,以及负责 Elasticsearch 集群规划、性能优化和线上稳定性的团队。
推荐阅读路径
- 原理入门:自上而下认识 Elasticsearch和自下而上认识 Elasticsearch。
- 理解存储:Elasticsearch 文件存储与_source、doc_values、store 性能。
- 进入源码:写入分析、检索分析与分片恢复分析。
- 解决性能问题:大文档查询优化和From/Size、Scroll、Search After。
- 吸收事故经验:磁盘与分片事故和mmap/原生内存事故。
关键术语与常见决策
- 数据与存储:Mapping、Segment、Translog、_source、doc_values、store、mmap。
- 查询:Query/Fetch、Search After、Scroll、Routing、Nested、Parent/Child。
- 集群:Shard、Replica、Cluster State、Recovery、Primary Term、Checkpoint。
- 资源:JVM Heap、Native Memory、Page Cache、Disk Watermark、Circuit Breaker。
- 关键决策:分片多大、字段如何存、是否自定义路由、何时扩容、如何不停机迁移。