这个接口查什么
_cat/plugins 是 Elasticsearch cat API 的子接口,按节点逐行列出已加载插件的组件名、版本与描述。插件以节点为单位安装,同一个集群里各节点的插件清单可能不同;遇到「某个功能只在部分节点报错」「快照仓库在个别节点注册失败」这类现象,第一步就是拉这份清单,确认各节点的组件与版本是否齐全一致。
基本信息
| 适用平台 | Elasticsearch 7.x / 8.x、OpenSearch(接口名相同) |
|---|---|
| 请求形式 | GET /_cat/plugins?v&h=name,component,version&s=component |
| 权限要求 | 集群 monitor 或 manage 权限 |
| 返回列 | name、component、version、description、type |
| 安装方式 | 每台节点执行 bin/elasticsearch-plugin install <组件>,然后重启该节点 |
典型使用场景
- 核对各节点组件集合是否一致,定位「只有部分节点报错」的依赖缺失
- 确认 repository-s3 等仓库类插件在所有节点都装齐,否则快照注册与恢复会失败
- 排查中文分词等分析插件只在个别节点生效,导致同一查询在不同节点返回不同结果
- 审计插件来源与版本,评估升级兼容性与安全面
- 滚动升级后逐个节点确认插件已按目标版本加载,而不是凭记忆推断
查询与交叉核对
查询与交叉核对
# 列出所有节点的插件,-v 带列名
curl -s 'http://es1:9200/_cat/plugins?v'
# 只取组件与版本并按组件排序,一眼看出哪些节点缺装或版本不同
curl -s 'http://es1:9200/_cat/plugins?v&h=name,component,version&s=component'
# 只看单个节点的插件清单
curl -s 'http://es1:9200/_cat/plugins/es2?v'
# 与节点清单交叉验证:两个接口的 name 列应当能一一对上
curl -s 'http://es1:9200/_cat/nodes?v&h=name,ip,version,node.role'输出逐列读法
| 列 | 含义 | 正常与异常表现 |
|---|---|---|
| name | 节点名 | 应与 _cat/nodes 的节点名完全一致;出现陌生名字说明集群混进了非预期节点 |
| component | 插件组件名 | 同一集群所有节点该列取值集合应当相同,不同即为安装不一致 |
| version | 插件版本 | 必须与节点版本一致;升级后仍显示旧版本说明该节点未重启或插件未替换 |
| description | 插件自述信息 | 为空多见于第三方插件未写属性,不影响功能 |
| type | 插件类别 | 如 analysis、repository,用于快速过滤关注的类别 |
插件版本必须与节点版本严格对应,跨大版本安装会被直接拒绝;升级前先卸载不兼容的第三方插件,升级完成后再按目标版本重装并重启。
生产集群不要安装来源不明的插件:插件代码运行在节点进程内,拥有节点的全部权限,等同于把代码执行能力交给外部。