要精通 Elasticsearch(ES),需要系统掌握其核心原理、索引机制、查询 DSL、分布式架构、性能调优、运维管理及与业务系统的集成。以下是完整的知识体系:
✅ 一、Elasticsearch 基础核心
-
ES 是什么
- 分布式搜索与分析引擎
- 基于 Lucene,支持全文检索、结构化查询、聚合分析
-
核心概念
- 索引(Index)、文档(Document)、字段(Field)
- 节点(Node)、集群(Cluster)、分片(Shard)、副本(Replica)
-
数据类型与映射(Mapping)
- 字段类型:text、keyword、date、long、nested、geo_point 等
- 动态映射 vs 显式映射
- 分词器(Analyzer)、字段属性(index、store、doc_values)
✅ 二、索引与数据管理
-
索引操作
- 创建/删除索引、设置分片、副本数
- 索引模板(Index Template)、动态模板
-
文档操作
- 增删改查(CRUD)操作
- 批量接口(Bulk API)
- 乐观锁(_version)、部分更新(Update API)
-
倒排索引原理
- Token、Term、Posting List
- 分词流程:字符过滤器 → 分词器 → 词元过滤器
✅ 三、查询与分析(DSL)
-
查询 DSL 基础
match
、term
、range
、bool
、multi_match
、exists
等- 查询与过滤的区别(query vs filter)
-
聚合分析(Aggregation)
- Bucket 聚合:terms、range、histogram、date_histogram
- Metric 聚合:avg、sum、max、min、cardinality
- 嵌套聚合与子聚合
-
全文检索原理
- 分词、相关性评分(TF-IDF、BM25)
- 高亮(Highlight)、模糊查询、通配符查询、正则查询
✅ 四、分布式架构与原理
- 分片机制
- 主分片、副本分片
- 分片路由机制、文档定位 hash 算法
- 集群架构与角色
- Master 节点、Data 节点、协调节点、Ingest 节点
- 节点发现与主节点选举流程
- 写入与查询流程
- 写入数据的分发、主副本同步机制
- 查询请求的分发、合并结果流程
✅ 五、性能优化与调优
- 写入优化
- 批量写入、刷新控制(refresh_interval)
- 合并策略(merge policy)、translog 管理
- 查询优化
- filter 缓存、字段裁剪、分页优化(search_after)
- 使用 doc_values、避免 script 查询
- 索引优化
- Mapping 精简、关闭不必要的字段索引
- 合理设置分片数、避免小索引过多
- 集群调优
- JVM 参数、内存(heap size)、线程池配置
- 节点负载均衡、冷热分离、索引生命周期管理(ILM)
✅ 六、集成与扩展能力
- 与业务系统集成
- 与 Spring Boot 集成(Spring Data Elasticsearch)
- 与 Logstash、Beats、Kafka、Flink 等数据管道对接
- 实现日志采集、监控分析、搜索服务
- 常用插件与工具
- Kibana(可视化)、Head 插件、Cerebro、ElasticHQ
- 分词插件(IK Analyzer)、SQL 插件、Alerting 插件
- 安全与权限控制(X-Pack)
- 用户认证、角色权限、索引级/字段级权限
- HTTPS、API Key、审计日志
✅ 七、运维与故障处理
- 集群健康监控
- 节点状态、分片分布、集群状态(green/yellow/red)
- 使用
_cat
和_cluster
API 监控
- 常见故障排查
- 分片丢失、主节点选举失败、JVM GC 问题
- 查询慢、写入阻塞、磁盘空间不足
- 数据备份与恢复
- 快照与恢复(Snapshot & Restore)
- 支持本地、S3、HDFS 等存储
🎯 总结:
精通 Elasticsearch = 核心原理 + 查询分析 + 索引机制 + 分布式架构 + 性能调优 + 实战经验