一、cat API 简介
ES 大部分API返回值都是JSON
对象,格式化展示确实是挺整齐的。但是如果数据量多的话,不方便管理员查看。
而cat API
像是专为管理员设计的,因为它是以表格的形式返回的。如果你用的是curl
命令请求还可以使用 Linux 的命令用法,比如: grep
、help
、awk
之类的结果集筛选。
通过 GET
请求发送 cat
命名可以列出所有可用的 API:
# 展示所有可用的cat api |
二、cat API公共参数
cat api 的通用参数:
1、Verbose
这个参数主要作用就是返回的时候把表头也返回了。但是请求传参不是这个而是它简称的小写v
。如:
# 查询集群健康状态 |
2、Headers
通过v
参数显示表头,而通过这个参数h
只显示特定的列,例如:
GET http://172.16.1.236:9201/_cat/health?v&h=cluster,epoch,status,shards |
只显示了我h
后面指定的列
3、Help
见名知意,请求api查看帮助,例如:
GET http://172.16.1.236:9201/_cat/health?help |
第一列显示完整的名称,第二列显示缩写,第三列提供了关于这个参数的简介。
4、Sort
见名知意,对返回结果进行排序,传s
参数,格式:s=字段:desc(或 asc)
多个用逗号隔开。
GET http://172.16.1.236:9201/_cat/templates?v&s=order:desc,index_patterns:asc |
5、Numeric formats
ES支持参数对一些数字类型的返回值进行转换更改,有:字节,大小或时间值,对应的请求参数分别为:bytes
、size
、time
- bytes单位有:
b
、kb
、mb
、gb
、tb
、pb
。 - size单位有:
k
、m
、g
、t
、p
。 - time单位有:
d
、h
、m
、s
、ms
、micros
、nanos
。
简单例子:
# 返回值有字节类型的,以 b 为单位返回 |
cat api除了支持table格式的text
文本返回,也支持json等其他格式返回,总共有:text
(默认)、json
、smile
、yaml
、cbor
。
GET http://172.16.1.236:9201/_cat/indices?v&s=store.size:desc&bytes=b&format=json&pretty |
老实说如果是分析数据的话,个人感觉还是text好用,json 太长了。
三、cat API详解
把各个cat api 说个遍,Tip: 以下的所有API 都可以用上面的参数
1、aliases
返回集群下的所有别名信息,请求格式如下:
# 获取一个或多个别名的信息,<alias> 是一个别名数组,多个别名用逗号隔开 |
2、allocation
查看数据节点的分片情况与硬盘占用情况,格式:
# 获取一个或多个数据节点信息,<node_id>是一个节点ID数组(或者节点名称数组),多个用逗号隔开。 |
3、anomaly_detectors
查看 anomaly_detectors jobs 的api,先决条件是如果启动了安全功能必须拥有 monitor_ml
, monitor
, manage_ml
或 manage
集群权限才能使用这个api。
格式:理解上面的格式,后面基本上都同一个规律。不写注释了
GET /_cat/ml/anomaly_detectors/<job_id> |
4、count
返回集群下的所有索引的文档个数,格式:
# 这里和上面的区别就是,<target> 可以写具体的索引之外,也支持写 _all或* |
5、data_frame analytics
返回data frame analytics 的配置任务信息,没用过,如果启动了安全功能,需要 monitor_ml
权限.格式:
GET /_cat<data_frame_analytics_id> data_frame |
6、datafeeds
返回datafeeds的配置信息,格式:
GET /_cat/ml/datafeeds/<feed_id> |
如果启动了安全功能必须拥有 monitor_ml
, monitor
, manage_ml
或 manage
集群权限才能使用
7、fielddata
查看每个数据节点上字段属性包含fielddata的当前占用的堆内存。text类型的字段是不能分组及排序的。
ES中引入了fielddata的数据结构用来做正排索引。如果需要对某一个字段排序、分组聚合、过滤,则可将字段设置成fielddata。
格式:
GET /_cat/fielddata/<field> |
8、health
返回集群的运行状况
GET /_cat/health?v&ts=false |
9、indices
返回集群的索引信息,包含分片计数、文档数量、删除文档数、状态、存储等
# 这里和上面的区别就是,<target> 可以写具体的索引之外,也支持写 _all或*(通配符) |
10、master
返回master节点的信息,包括ID,绑定的IP地址和名称
GET /_cat/master?v |
11、nodeattrs
返回自定义节点属性
GET /_cat/nodeattrs?v |
12、nodes
返回集群节点信息
GET /_cat/nodes?v |
默认只返回上面几个列信息,其他的需要自己通过h参数指定,如下:
参数 | 参数简写 | 描述 |
---|---|---|
ip | i | IP地址 |
heap.percent | hp | 最大配置堆 |
ram.percent | rp | 已使用的总内存百分比 |
file_desc.percent | fdp | 使用的文件描述符百分比 |
node.role | r | 节点的角色。返回的值包括d(数据节点),i (目标节点),m(主资格节点),l(机器学习节点),v (仅投票节点),t(转换节点),r(远程集群客户端节点)和-(仅协调节点) ) |
master | m | 指示该节点是否为当选的主节点。返回的值包括*(当选的主服务器)和-(当选的主服务器) |
name | n | 节点名称 |
id | id | 节点的ID |
pid | p | 进程ID |
port | po | 绑定的运输港口,例如9300 |
http_address | http | 绑定的http地址,例如127.0.0.1:9200 |
version | v | Elasticsearch版本, |
build | b | Elasticsearch构建哈希 |
jdk | j | Java版本,例如1.8.0。 |
disk.total | dt | 总磁盘空间 |
disk.used | du | 已使用的磁盘空间 |
disk.avail | d | 可用磁盘空间 |
heap.current | hc | 已用堆 |
ram.current | rc | 已用的总内存 |
ram.max | rm | 总内存 |
cpu | cpu | 最近的系统CPU使用率 |
load_1m | l | 最近的平均负载 |
load_15m | l | 最近15分钟的平均负载 |
uptime | u | 节点正常运行时间 |
refresh.total | rto | 刷新次数 |
还有很多参数,就不一一写了。
13、pending tasks
查看被挂起的任务
GET /_cat/pending_tasks |
14、plugins
查看每个节点正在运行的插件
GET /_cat/plugins |
15、recovery
索引分片的恢复视图,包括正在进行和先前已完成的恢复,只要索引分片移动到群集中的其他节点,就会发生恢复事件
GET /_cat/recovery/<target> |
可以添加参数active_only=true
仅响应正在进行的分片恢复
16、repositories
返回集群的快照仓库
GET /_cat/repositories |
17、shards
返回索引的分片情况,格式:
# <target> 可以写具体的索引之外,也支持写 _all或*(通配符),多个索引逗号隔开 |
默认只返回了几个列信息,还有很多列信息
参数 | 参数简写 | 描述 |
---|---|---|
index | i | 索引名称 |
shard | s | 分片的名称 |
prirep | p | 分片类型。返回的值是primary或replica |
state | st | 分片的状态。返回值是:INITIALIZING:分片正在从对等分片或网关中恢复。 RELOCATING:分片正在重定位。 STARTED:分片已开始。 UNASSIGNED:分片未分配给任何节点 |
docs | d | 分片中的文档数 |
store | sto | 分片使用的磁盘空间 |
ip | ip | 节点的IP地址, |
id | id | 节点的ID |
node | n | 节点名称 |
completion.size | cs | 完成大小 |
indexing.index_total | iito | 索引操作的数量 |
indexing.index_failed | iif | 索引操作失败的次数 |
merges.current | mc | 当前合并操作的数量 |
merges.current_docs | mcd | 当前合并文档的数量 |
merges.total | mt | 完成的合并操作的数量 |
merges.total_docs | mtd | 合并文档的数量, |
query_cache.memory_size | qcm | 已使用的查询缓存存储器 |
sync_id | sync_id | 分片的同步ID。 |
unassigned.at | ua | 分片未分配的(UTC)时间 |
unassigned.details | ud | 分片未分配的详细信息 |
unassigned.for | uf | 请求未分配的UTC时间 |
unassigned.reason | ur | 未分配分片的原因:ALLOCATION_FAILED:由于分片分配失败而未分配。 CLUSTER_RECOVERED:由于完全群集恢复而未分配。 DANGLING_INDEX_IMPORTED:由于导入了悬空索引而未分配。 EXISTING_INDEX_RESTORED:由于恢复到封闭索引而未分配。 INDEX_CREATED:由于创建索引的API而未分配。 INDEX_REOPENED:由于打开封闭索引而未分配。 NEW_INDEX_RESTORED:由于恢复到新索引而未分配。 NODE_LEFT:由于托管它的节点离开集群而未分配。 REALLOCATED_REPLICA:标识一个更好的副本位置,并导致现有副本分配被取消。 REINITIALIZED:分片从开始移回初始化时。 REPLICA_ADDED:由于明确添加副本而未分配。 REROUTE_CANCELLED:由于明确的取消重新路由命令而未分配。 |
还有很多参数,就不一一写了。help
你就知道
18、segments
返回索引 Lucene segments 信息,
# <target> 可以写具体的索引之外,也支持写 _all或*(通配符),多个索引逗号隔开 |
19、snapshots
返回ES的快照仓库,快照也就是ES的备份。
|
20、task management
返回有关当前在集群中一个或多个节点上执行的任务的信息。task 管理API,是一个开发版的,未来估计会变了解就好
GET /_cat/tasks |
21、templates
返回集群的索引模板
GET /_cat/templates/<template_name> |
22、thread pool
返回集群下每个节点的线程池,包括所有内置线程池和自定义线程池
GET /_cat/thread_pool/<thread_pool> |
23、trained model
返回训练模型的配置信息,需要 monitor_ml
权限
GET /_cat/ml/trained_models |
24、transforms
返回transformsp配置与用法信息
GET /_cat<transform_id> |
返回有很多列,带上help查看所有列
四、结尾
感觉没必要写那么多,记得第一个请求GET /_cat
就掌握所有了!!!