ES故障排查命令
# 🟢 Elasticsearch 基础概念介绍
# 1️⃣ Elasticsearch 是什么?
- Elasticsearch 是一个基于 Apache Lucene 的分布式搜索引擎。
- 适用于全文搜索、结构化搜索、分析大数据。
- 特点:
- 分布式、高可用、可水平扩展
- 实时索引和搜索
- 支持复杂查询、聚合和分析
- RESTful API 访问
# 2️⃣ 核心术语
| 概念 | 说明 |
|---|---|
| Cluster(集群) | 一组 Elasticsearch 节点共同工作形成的集群,由 cluster.name 标识。 |
| Node(节点) | 集群中的单个 Elasticsearch 实例。每个节点有角色(master、data、ingest、coordinating)。 |
| Index(索引) | 类似数据库中的“库”,存储文档的逻辑集合,每个索引有配置的主分片和副本分片。 |
| Document(文档) | 索引中的一条记录,JSON 格式。 |
| Field(字段) | 文档中的键值对,可用作搜索和分析。 |
| Shard(分片) | 索引被切分成的基本存储单元。主分片(primary)存储原始数据,副本分片(replica)用于备份和负载均衡。 |
| Replica(副本) | 主分片的复制,用于容错和高可用。 |
| Mapping(映射) | 定义文档字段类型和索引规则。 |
| Analyzer(分析器) | 将文本拆分为可搜索的词条,用于全文搜索。 |
| Cluster State(集群状态) | 集群元信息,包括索引、分片、节点、路由信息。 |
# 3️⃣ 节点角色
| 角色 | 功能 |
|---|---|
| Master Node(主节点) | 管理集群元数据、节点加入、索引创建、分片分配。 |
| Data Node(数据节点) | 存储数据和执行搜索、聚合操作。 |
| Ingest Node(预处理节点) | 可对文档执行 pipeline 处理(例如解析、修改字段)。 |
| Coordinating Node(协调节点) | 接收请求,分发到数据节点,汇总结果(所有节点默认兼任协调节点)。 |
| ML / Voting / Frozen Nodes | 可选节点角色,用于机器学习、投票、冷数据存储。 |
# 4️⃣ 数据存储和查询
- 分片机制
- 索引 → 主分片 + 副本分片
- 支持水平扩展,大数据量分布在多个节点
- 倒排索引
- 核心搜索机制,将文档拆分成词条 → 生成倒排索引
- 查询速度非常快
- 全文搜索
- 支持 match、multi_match、bool 查询
- 支持高亮、排序、分页、聚合
# 5️⃣ 高可用与扩展
- 节点故障时:
- 副本分片自动提升为主分片
- 分片重新分配保证数据安全
- 扩展:
- 增加节点 → 分片重新均衡
- 索引分片可通过
number_of_shards/number_of_replicas配置
# 6️⃣ 常用 API 分类
| 类型 | 常用 API |
|---|---|
| 集群管理 | _cluster/health, _cluster/state, _cat/nodes |
| 索引管理 | _cat/indices, _stats, _mapping, _settings |
| 文档操作 | GET /index/_doc/id, POST /index/_doc, DELETE /index/_doc/id |
| 搜索 | _search, _msearch, _count, _termvectors |
| 分片 / 副本 | _cat/shards, _cluster/reroute, _recovery |
# 🔹 总结
- Elasticsearch 是 分布式搜索与分析平台,通过 集群 → 节点 → 索引 → 分片 → 文档 的层级管理数据。
- 主分片和副本分片是保证高可用和可扩展的核心机制。
- 节点角色不同,功能不同,企业部署中通常 Master + Data + Ingest 分开。
- 熟悉
_cat系列 API 和_clusterAPI 是运维和排障的基础。
# 🟢 Elasticsearch 7.17 企业级运维一页表
| 模块 | 命令 / URL | 说明 | 建议阈值 / 注意事项 |
|---|---|---|---|
| 集群健康 | _cluster/health?pretty | 查看集群状态、节点数、分片活跃度 | status=green,active_shards_percent_as_number>99% |
| 节点列表 | _cat/nodes?v | 查看每个节点资源、角色、负载 | heap.percent < 75%,ram.percent < 80% |
| 主节点 | _cat/master?v | 当前 master 节点信息 | 避免单 master 单点故障 |
| 索引列表 | _cat/indices?v | 查看索引状态、主副本、文档数、存储量 | pri/rep 合理配置,store.size < 磁盘总量 80% |
| 分片状态 | _cat/shards?v | 查看分片分布及状态 | 所有分片状态应为 STARTED,UNASSIGNED 需关注 |
| 节点统计 | _nodes/stats?pretty | 节点 CPU、内存、磁盘、线程池详细信息 | 重点监控 JVM 堆、磁盘空间、线程池队列 |
| JVM 监控 | _nodes/stats/jvm?pretty | 查看堆内存、GC 次数和时间 | JVM 堆使用 < 75%,GC频繁需排查 |
| 线程池监控 | _cat/thread_pool?v | 查看索引、搜索、bulk 等线程池使用情况 | 队列长度高说明瓶颈 |
| 慢查询 | _cat/slowlog?v | 查看慢查询记录 | 定期优化查询或增加索引 |
| 索引分片配置 | _stats / 创建索引时指定 shards/replicas | 查看索引主副本、文档数量、存储大小 | 主分片数量与数据量匹配,副本数≥1 |
| 重新分片 | _cluster/reroute | 手动分片迁移 | 分片均衡、避免节点磁盘满 |
| 删除索引 | DELETE /index-name | 删除历史索引 | 可结合 ILM 自动管理 |
| 日志路径 | /var/log/elasticsearch/ | 查看 elasticsearch.log / gc.log | 关注 GC、错误和警告 |
| 集群排障流程 | 1. _cluster/health → 2. _cat/nodes → 3. _cat/shards → 4. 查看日志/线程池/JVM → 5. 调整分片/节点 | 遇到集群红色或节点异常快速定位 | 优先保证 master 节点健康 |
# 🔹 运维小技巧
- 应用配置:
- 至少配置 2~3 个节点 IP 或 VIP 连接 ES,保证 failover。
- 分片管理:
- 数据量大,索引分片数量按 30~50GB/主分片配置。
- 性能监控:
- JVM Heap、CPU、磁盘、线程池队列需定期监控。
- 自动化管理:
- 使用 ILM 管理索引生命周期(滚动、删除、迁移)。
- 日志分析:
- 定期分析 slowlog、elasticsearch.log、gc.log,排查慢查询、OOM、节点离线。
上次更新: 2026/04/29, 17:14:21
|