Elasticsearch 集群管理核心 API 指南:健康、状态、分片诊断与运维实战

一、集群健康状态 API (_cluster/health)

获取集群的总体健康状况,是监控的首要指标。

GET http://192.168.130.61:9200/_cluster/health

响应字段解析

curl http://192.168.130.61:9200/_cluster/health 2>/dev/null  |jq
{"cluster_name": "Elasticsearch",            // 集群名称"status": "green",                          // 集群状态: green/yellow/red"timed_out": false,                         // 请求是否超时"number_of_nodes": 3,                       // 集群总节点数"number_of_data_nodes": 3,                  // 数据节点数"active_primary_shards": 20,                // 活跃主分片数"active_shards": 31,                        // 活跃总分片数 (主+副本)"relocating_shards": 0,                     // 正在迁移的分片数"initializing_shards": 0,                   // 正在初始化的分片数"unassigned_shards": 0,                     // 未分配的分片数 (需重点关注)"delayed_unassigned_shards": 0,             // 延迟未分配的分片数"number_of_pending_tasks": 0,               // 待处理的集群任务数"active_shards_percent_as_number": 100.0    // 活跃分片百分比
}

响应关键字段说明

  • status: 集群状态,green(所有分片正常)、yellow(主分片正常,副本分片缺失)、red(有主分片缺失)。

  • number_of_nodes: 集群中的节点数。

  • number_of_data_nodes: 数据节点数。

  • active_primary_shards: 活跃的主分片数。

  • active_shards: 活跃的总分片数(主+副本)。

  • unassigned_shards: 未分配的分片数(需重点关注)。

  • 用途:快速判断集群是否健康,是否存在分片未分配、节点丢失等问题。

  • 参考链接:Elasticsearch 8.2 - cluster health


二、集群状态 API (_cluster/state)

_cluster/state 是集群的元数据核心,包含集群运行所需的所有关键信息:

  1. 集群中所有节点的身份与属性
  2. 集群范围的设置(settings
  3. 所有索引的元数据(映射 mappings、设置 settings
  4. 每个分片副本的位置与状态(路由表 routing_table

常用调用方式

# (1) 获取完整的集群状态 (信息量大,谨慎调用)
GET http://192.168.130.61:9200/_cluster/state# (2) 仅获取节点信息
GET http://192.168.130.61:9200/_cluster/state/nodes# (3) 获取指定元数据 (nodes, version, routing_table) 和指定索引 (oldboyedu* 开头) 的状态
GET http://192.168.130.61:9200/_cluster/state/nodes,version,routing_table/oldboyedu*
  • 用途:深度诊断元数据问题、理解集群内部结构。生产环境避免频繁调用完整状态
  • 参考链接:Elasticsearch 8.2 - cluster state

三、集群统计 API (_cluster/stats)

从集群层面汇总所有节点的统计信息,提供资源使用概览。

GET http://192.168.130.61:9200/_cluster/stats

返回信息包含

  • 基本索引指标:分片总数、文档总数、存储使用总量。

  • 节点信息:节点数量、角色分布。

  • 系统资源

    • 操作系统:CPU 使用率、内存、负载。
    • JVM:版本、堆内存使用、GC 情况。
    • 进程:打开文件描述符数。
  • 已安装插件

  • 用途:全面了解集群整体资源消耗与负载,辅助容量规划。

  • 参考链接:Elasticsearch 8.2 - cluster stats


四、集群分片分配诊断 API (_cluster/allocation/explain)

当分片未分配或未按预期重平衡时,此 API 提供根本原因分析。

诊断未分配分片原因

GET http://192.168.130.61:9200/_cluster/allocation/explain
{"index": "teacher",     // 目标索引"shard": 0,             // 分片编号"primary": true         // 是否为主分片
}
  • 输出:详细解释为何该主分片 0 未能分配(如磁盘不足、节点排斥规则、版本不兼容等)。

解释已分配分片为何未移动

  • 即使分片已分配,此 API 也会解释为何它没有被移动到其他节点(例如,由于 allocation 设置、分片平衡策略或成本考量)。

  • 用途:精准定位分片分配问题,是解决 UNASSIGNED 分片的首选工具。

  • 参考链接:Elasticsearch 8.2 - cluster allocation explain


五、集群分片重路由 API (_cluster/reroute)

手动干预分片分配,允许移动、取消或分配分片。生产环境务必谨慎使用!

(1) 移动分片

将分片从一个节点显式移动到另一个节点。

POST http://192.168.130.61:9200/_cluster/reroute
{"commands": [{"move": {"index": "webdata-logs-v1",  // 索引名"shard": 0,                                      // 分片号"from_node": "es-node-01",             // 源节点"to_node": "es-node-02"                // 目标节点}}]
}

(2) 取消分片分配

取消一个已分配的副本分片,触发其重新初始化和再分配。

POST http://192.168.130.61:9200/_cluster/reroute
{"commands": [{"cancel": {"index": "oldboyedu-linux85-student-jiaoshi07",  // 索引名"shard": 0,                                      // 分片号"node": "elk103.oldboyedu.com"                   // 要取消的节点// "allow_primary": true                        // (危险!) 允许取消主分片,需显式声明}}]
}
  • 用途:强制负载均衡、在节点维护前迁移数据、解决特定分配阻塞问题。
  • 警告movecancel 操作会触发数据复制,消耗网络和磁盘 I/O。切勿随意取消主分片 (allow_primary)
  • 参考链接:Elasticsearch 8.2 - cluster reroute

六、补充:其他关键运维 API (强烈推荐)

1. 节点信息 (_cat/nodes)

GET http://192.168.130.61:9200/_cat/nodes?v&h=ip,name,heap.percent,ram.percent,cpu,load_1m,roles,disk.avail,disk.used_percentcurl http://192.168.130.61:9200/_cat/nodes?v
curl http://192.168.130.61:9200/_cat/nodes
  • 用途:查看每个节点的实时状态,如 CPU、内存、堆内存、磁盘使用率、角色(master, data, ingest 等)和负载。_cat/nodes 的输出更简洁,适合快速查看。

2. 索引信息 (_cat/indices)

GET http://192.168.130.61:9200/_cat/indices?v&s=store.size:desc
  • 用途:监控索引大小、文档数、健康状态,识别大索引或问题索引。

3. 挂起任务 (_cat/tasks)

GET http://192.168.130.61:9200/_cat/tasks?v
  • 用途:查看正在运行的长时间任务(reindex, delete-by-query 等),排查阻塞。

4. 待处理任务 (_cluster/pending_tasks)

GET http://192.168.130.61:9200/_cluster/pending_tasks
  • 用途:检查集群任务队列,队列过长可能预示 Master 节点压力大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/91916.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/91916.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Three.js 与 WebXR:初识 VR/AR 开发

引言 WebXR 是现代 Web 技术的重要组成部分,允许开发者通过浏览器创建虚拟现实(VR)和增强现实(AR)体验。结合 Three.js 的强大渲染能力,WebXR 可以轻松构建沉浸式 3D 场景。本文将介绍如何使用 Three.js 和…

Kubernetes架构概览

目录 专栏介绍 作者与平台 您将学到什么? 学习特色 Kubernetes架构概览 1.1 Kubernetes简介 1.2 基本架构 1.3 主要组件 1.4 核心功能 组件架构图解 2.1 控制平面组件详解 2.1.1 kube-apiserver 2.1.2 etcd 2.1.3 kube-scheduler 2.1.4 kube-controll…

前端技术栈查缺补漏

前端技术栈涵盖广泛,涉及多个领域和技术方向。以下是全面的分类总结,帮助你对前端技术生态有系统化的了解:一、核心基础HTML/CSS HTML5(语义化标签、Web Components)CSS3(Flexbox/Grid、动画、变量、BEM/SM…

文明7|席德·梅尔的文明VII PC/手机双端 模拟器版(Sid Meier’s Civilization VII)免安装中文版

网盘链接: 文明7|席德梅尔的文明VII 免安装中文版 名称:文明7|席德梅尔的文明VII PC/手机双端 模拟器版 免安装中文版 描述:这款策略神作重新定义了"历史蝴蝶效应"! 《文明7》的"文明基因"系统让每个选择都刻…

C#模式匹配用法与总结

1. 模式匹配概述​​ 模式匹配是C# 7.0引入的机制,用于检查数据的类型、值或结构,并提取信息。通过is表达式、switch语句/表达式实现,显著简化条件逻辑,提升代码可读性和安全性。 ​​核心优势​​: ​​简洁性​​&…

修改git commit 提交版本的描述信息

1 修改最后一次提交(未推送到远程仓库) 适用场景:提交仅存在于本地,尚未执行 git push 操作步骤:git commit --amend -m "新的正确备注"原理:–amend 会合并新的修改到上一次提交,并允…

PyQt GUI开发初学者:固定尺寸还是全屏自适应?

PyQt GUI开发初学者:固定尺寸还是全屏自适应?在PyQt GUI开发中,新手常常面临一个选择:是应该为应用程序设置固定尺寸,还是采用全屏自适应设计?这个决定不仅关乎用户体验,还影响开发效率和应用的…

量子图灵机 Quantum Turing Machine, QTM

量子图灵机(Quantum Turing Machine, QTM)是经典图灵机(Turing Machine, TM)在量子计算框架下的推广,它利用量子力学原理(如叠加态、纠缠和幺正演化)扩展了计算能力。下面对量子图灵机进行解析。…

用于 UBI 的 Elasticsearch 插件:从搜索查询中分析用户行为

作者:来自 Elastic Eduard Martin 想获得 Elastic 认证?了解下一期 Elasticsearch Engineer 培训的时间! Elasticsearch 拥有丰富的新功能,帮助你为你的使用场景构建最佳搜索解决方案。深入查看我们的示例笔记本以了解更多信息&a…

python的蛋糕店管理系统

前端开发框架:vue.js 数据库 mysql 版本不限 后端语言框架支持: 1 java(SSM/springboot)-idea/eclipse 2.NodejsVue.js -vscode 3.python(flask/django)–pycharm/vscode 4.php(thinkphp/laravel)-hbuilderx 数据库工具:Navicat/SQLyog等都可以 该系统通…

开源项目:排序算法的多种实现方式

以 排序算法 为例,展示如何在 Python 中进行不同实现方式的对比项目概述本项目旨在通过 Python 实现几种经典的排序算法,并通过性能对比、代码注释和优化手段,为开源社区提供参考。选择排序、冒泡排序、快速排序和归并排序作为主要算法&#…

操作系统数据格式相关(AI回答)

二进制接口(ABI) DeepSeek-R1 回答完成 深度思考完成 用时20秒,搜索全网24篇资料 二进制接口(ABI,Application Binary Interface)是计算机系统中定义二进制层面交互规则的低层接口规范,确保不…

从入仓到结算全自动化:易境通如何重构散货拼柜业务流程?

在全球贸易蓬勃发展的今天,海运拼箱(LCL)凭借成本低、灵活性强的优势,成为中小货主、跨境电商和国际贸易企业的首选物流方式。然而,散货拼柜业务涉及多货主、多环节、多流程,传统管理方式存在信息不透明、效…

CAP 理论笔记

一、CAP 理论概述 CAP 理论由 Eric Brewer 于 2000 年提出,并在 2002 年被正式证明。它描述了分布式系统在 一致性(Consistency)、可用性(Availability)、分区容忍性(Partition Tolerance) 三个…

Android 底层实现基础

Activity 生命周期应用内 Activity 跳转流程(A → B) 从 Activity A 打开新的 Activity B(如点击按钮跳转详情页) A.onCreate() → A.onStart() → A.onResume() (A 已在前台)点击跳转按钮 → A.onPause() …

MySQL进阶:(第一篇) 深入解析MySQL存储引擎架构

一、MySQL的体系结构连接层:最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。服务层:第二层架构主要完成大多数的核心服务功能&#xff0c…

京东m端 滑块 分析 t30

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!部分python代码response requests.pos…

CentOS使用命令行工具为其配置静态网络并使用VMware软件ovf配置文件快速配置多台不同ip的centos文件

目录 一、实验前准备 1.SSH远程登录工具 二、CentOS配置静态IP并实现远程ssh登录 1.VMware软件查看NAT模式下默认网段和网关 2.使用ipconfig查看当前网卡名字和动态分配的ip地址 3.使用VIM编辑网络配置文件(此步骤可有其他编辑器替代,例如&#xf…

设计模式学习[17]---组合模式

文章目录前言1.引例2.一致性抽象处理3.透明组合模式与安全组合模式总结前言 在画类图的时候,类与类之间有组合关系,聚合关系,我本来以为这个组合模式应该是整体与部分的关系,其实设计模式中的组合模式和类图中的组合不是同一个东…

48Days-Day12 | 添加字符,数组变换,装箱问题

添加字符 添加字符_牛客笔试题_牛客网 算法原理 因为本题数据量都比较小,所以我们可以直接使用暴力解法,枚举B字符串的每一个位置作为与A字符串比较的起点,维护一个最小位数的值 代码 import java.util.*;// 注意类名必须为 Main, 不要有…