一、cat API 简介 ES 大部分API返回值都是JSON对象,格式化展示确实是挺整齐的。但是如果数据量多的话,不方便管理员查看。 而cat API 像是专为管理员设计的,因为它是以表格的形式返回的。如果你用的是curl命令请求还可以使用 Linux 的命令用法,比如: grep、help、awk 之类的结果集筛选。
 
通过 GET 请求发送 cat 命名可以列出所有可用的 API:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 GET  http://172.16.1.236:9201/_cat =^.^= /_cat/allocation /_cat/shards /_cat/shards/{index} /_cat/master /_cat/nodes /_cat/tasks /_cat/indices /_cat/indices/{index} /_cat/segments /_cat/segments/{index} /_cat/count /_cat/count/{index} /_cat/recovery /_cat/recovery/{index} /_cat/health /_cat/pending_tasks /_cat/aliases /_cat/aliases/{alias} /_cat/thread_pool /_cat/thread_pool/{thread_pools} /_cat/plugins /_cat/fielddata /_cat/fielddata/{fields} /_cat/nodeattrs /_cat/repositories /_cat/snapshots/{repository} /_cat/templates /_cat/ml/anomaly_detectors /_cat/ml/anomaly_detectors/{job_id} /_cat/ml/trained_models /_cat/ml/trained_models/{model_id} /_cat/ml/datafeeds /_cat/ml/datafeeds/{datafeed_id} /_cat/ml/data_frame/analytics /_cat/ml/data_frame/analytics/{id} /_cat/transforms /_cat/transforms/{transform_id} 
 
二、cat API公共参数 cat api 的通用参数:
1、Verbose 这个参数主要作用就是返回的时候把表头也返回了。但是请求传参不是这个而是它简称的小写v。如:
1 2 3 4 5 # 查询集群健康状态 GET http://172.16.1.236:9201/_cat/health?v epoch      timestamp cluster  status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 1600829883 02:58:03  mtSearch green           3         3     57  27    0    0        0             0                  -                100.0% 
 
通过v参数显示表头,而通过这个参数h只显示特定的列,例如:
1 2 3 4 GET http://172.16.1.236:9201/_cat/health?v&h=cluster,epoch,status,shards cluster  epoch      status shards mtSearch 1600830942 green      57 
 
只显示了我h后面指定的列
3、Help 见名知意,请求api查看帮助,例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 GET http://172.16.1.236:9201/_cat/health?help epoch                 | t,time                                   | seconds since 1970-01-01 00:00:00   timestamp             | ts,hms,hhmmss                            | time in HH:MM:SS                    cluster               | cl                                       | cluster name                        status                | st                                       | health status                       node.total            | nt,nodeTotal                             | total number of nodes               node.data             | nd,nodeData                              | number of nodes that can store data shards                | t,sh,shards.total,shardsTotal            | total number of shards              pri                   | p,shards.primary,shardsPrimary           | number of primary shards            relo                  | r,shards.relocating,shardsRelocating     | number of relocating nodes          init                  | i,shards.initializing,shardsInitializing | number of initializing nodes        unassign              | u,shards.unassigned,shardsUnassigned     | number of unassigned shards         pending_tasks         | pt,pendingTasks                          | number of pending tasks             max_task_wait_time    | mtwt,maxTaskWaitTime                     | wait time of longest task pending   active_shards_percent | asp,activeShardsPercent                  | active number of shards in percent  
 
第一列显示完整的名称,第二列显示缩写,第三列提供了关于这个参数的简介。
4、Sort 见名知意,对返回结果进行排序,传s参数,格式:s=字段:desc(或 asc) 多个用逗号隔开。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 GET http://172.16.1.236:9201/_cat/templates?v&s=order:desc,index_patterns:asc name                            index_patterns               order      version composed_of .slm-history                    [.slm-history-2*]            2147483647 2        .triggered_watches              [.triggered_watches*]        2147483647 11       .watch-history-11               [.watcher-history-11*]       2147483647 11       .watches                        [.watches*]                  2147483647 11       ilm-history                     [ilm-history-2*]             2147483647 2        my_template                     [index*, topic*]             201                [setting_template, dynamic_template] test_template                   [test*, topic*]              200                [] logs                            [logs-*-*]                   100        0       [logs-mappings, logs-settings] metrics                         [metrics-*-*]                100        0       [metrics-mappings, metrics-settings] test_template                   [test*, topic*]              1                   .logstash-management            [.logstash]                  0                   .ml-anomalies-                  [.ml-anomalies-*]            0          7090099  .ml-config                      [.ml-config]                 0          7090099  .ml-inference-000002            [.ml-inference-000002]       0          7090099  .ml-meta                        [.ml-meta]                   0          7090099  .ml-notifications-000001        [.ml-notifications-000001]   0          7090099  .ml-state                       [.ml-state*]                 0          7090099  .ml-stats                       [.ml-stats-*]                0          7090099  .monitoring-alerts-7            [.monitoring-alerts-7]       0          7000199  .monitoring-beats               [.monitoring-beats-7-*]      0          7000199  .monitoring-es                  [.monitoring-es-7-*]         0          7000199  .monitoring-kibana              [.monitoring-kibana-7-*]     0          7000199  .monitoring-logstash            [.monitoring-logstash-7-*]   0          7000199  .transform-internal-005         [.transform-internal-005]    0          7090099  .transform-notifications-000002 [.transform-notifications-*] 0          7090099  
 
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。 
 
可参考文档:common-options.html#size-units 
 
简单例子:
1 2 3 4 5 6 7 8 9 GET  http://172.16.1.236:9201/_cat/indices?v&s=store.size:desc&bytes=b health  status  index        uuid                    pri  rep  docs.count  docs.deleted  store.size  pri.store.size green   open    topic        ZHfmduvvSDu014SIF9IC9A    3    2           3             0       60633           20211 green   open    .security-7  HjqN4EO1Qq2JQLGg8fLwzQ    1    1           7             0       52266           26133 green   open    test-000002  G8zQeW3_Qrmk3QAEhM2sZQ    1    1           4             0       35536           17768 green   open    test-001     R7-IIFffRjSDwBmOws09kQ    5    1           3             0       29166           14583 green   open    test-000003  0FMWo1FTTpSBqLixYNcNGg    5    1           1             0       15202            7601 
 
cat api除了支持table格式的text文本返回,也支持json等其他格式返回,总共有:text(默认)、json、smile、yaml、cbor。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 GET http://172.16.1.236:9201/_cat/indices?v&s=store.size:desc&bytes=b&format=json&pretty [     {         "health": "green",         "status": "open",         "index": "topic",         "uuid": "ZHfmduvvSDu014SIF9IC9A",         "pri": "3",         "rep": "2",         "docs.count": "3",         "docs.deleted": "0",         "store.size": "60633",         "pri.store.size": "20211"     },     {         "health": "green",         "status": "open",         "index": ".security-7",         "uuid": "HjqN4EO1Qq2JQLGg8fLwzQ",         "pri": "1",         "rep": "1",         "docs.count": "7",         "docs.deleted": "0",         "store.size": "52266",         "pri.store.size": "26133"     },     {         "health": "green",         "status": "open",         "index": "test-000002",         "uuid": "G8zQeW3_Qrmk3QAEhM2sZQ",         "pri": "1",         "rep": "1",         "docs.count": "4",         "docs.deleted": "0",         "store.size": "35536",         "pri.store.size": "17768"     },     {         "health": "green",         "status": "open",         "index": "test-001",         "uuid": "R7-IIFffRjSDwBmOws09kQ",         "pri": "5",         "rep": "1",         "docs.count": "3",         "docs.deleted": "0",         "store.size": "29166",         "pri.store.size": "14583"     },     {         "health": "green",         "status": "open",         "index": "test-000003",         "uuid": "0FMWo1FTTpSBqLixYNcNGg",         "pri": "5",         "rep": "1",         "docs.count": "1",         "docs.deleted": "0",         "store.size": "15202",         "pri.store.size": "7601"     } ] 
 
老实说如果是分析数据的话,个人感觉还是text好用,json 太长了。
三、cat API详解 把各个cat api 说个遍,Tip: 以下的所有API 都可以用上面的参数 
1、aliases 返回集群下的所有别名信息,请求格式如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 GET  /_cat/aliases/<alias> GET  /_cat/aliases GET  http://172.16.1.236:9201/_cat/aliases/test,.security,topic?v alias      index        filter  routing.index  routing.search  is_write_index test       test-000002  -       -              -               false .security  .security-7  -       -              -               - test       test-001     -       -              -               false test       test-000003  -       -              -               true 
 
2、allocation 查看数据节点的分片情况与硬盘占用情况,格式:
1 2 3 4 5 6 7 8 GET  /_cat/allocation/<node_id> GET  /_cat/allocation GET  http://172.16.1.236:9201/_cat/allocation/mtNode1,mtNode2,mtNode3?v 
 
3、anomaly_detectors 查看 anomaly_detectors jobs 的api,先决条件是如果启动了安全功能必须拥有 monitor_ml, monitor, manage_ml 或 manage集群权限才能使用这个api。 格式:理解上面的格式,后面基本上都同一个规律。不写注释了
1 2 3 GET /_cat/ml/anomaly_detectors/<job_id> GET /_cat/ml/anomaly_detectors 
 
4、count 返回集群下的所有索引的文档个数,格式:
1 2 3 4 5 GET  /_cat/count/<target> GET  /_cat/count 
 
5、data_frame analytics 返回data frame analytics 的配置任务信息,没用过,如果启动了安全功能,需要 monitor_ml 权限.格式:
1 2 3 GET /_cat/ml/data_frame/analytics/<data_frame_analytics_id> GET /_cat/ml/data_frame/analytics 
 
6、datafeeds 返回datafeeds的配置信息,格式:
1 2 3 GET /_cat/ml/datafeeds/<feed_id> GET /_cat/ml/datafeeds 
 
如果启动了安全功能必须拥有 monitor_ml, monitor, manage_ml 或 manage集群权限才能使用
7、fielddata 查看每个数据节点上字段属性包含fielddata的当前占用的堆内存。text类型的字段是不能分组及排序的。 ES中引入了fielddata的数据结构用来做正排索引。如果需要对某一个字段排序、分组聚合、过滤,则可将字段设置成fielddata。 格式:
1 2 3 GET /_cat/fielddata/<field> GET /_cat/fielddata 
 
8、health 返回集群的运行状况
1 GET /_cat/health?v&ts=false 
 
9、indices 返回集群的索引信息,包含分片计数、文档数量、删除文档数、状态、存储等
1 2 3 4 5 6 7 GET  /_cat/indices/<target> GET  /_cat/indices GET  http://172.16.1.236:9201/_cat/indices?v&health=green 
 
10、master 返回master节点的信息,包括ID,绑定的IP地址和名称
 
11、nodeattrs 返回自定义节点属性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 GET /_cat/nodeattrs?v node    host         ip           attr              value mtNode1 172.16.1.236 172.16.1.236 ml.machine_memory 16825085952 mtNode1 172.16.1.236 172.16.1.236 ml.max_open_jobs  20 mtNode1 172.16.1.236 172.16.1.236 xpack.installed   true mtNode1 172.16.1.236 172.16.1.236 transform.node    true mtNode3 172.16.1.236 172.16.1.236 ml.machine_memory 16825085952 mtNode3 172.16.1.236 172.16.1.236 ml.max_open_jobs  20 mtNode3 172.16.1.236 172.16.1.236 xpack.installed   true mtNode3 172.16.1.236 172.16.1.236 transform.node    true mtNode2 172.16.1.236 172.16.1.236 ml.machine_memory 16825085952 mtNode2 172.16.1.236 172.16.1.236 ml.max_open_jobs  20 mtNode2 172.16.1.236 172.16.1.236 xpack.installed   true mtNode2 172.16.1.236 172.16.1.236 transform.node    true 
 
12、nodes 返回集群节点信息
1 2 3 4 5 6 7 8 9 GET /_cat/nodes?v # 返回的字段不明白可以使用help参数 # heap.percent 最大配置堆,ram.percent 内存占用百分比 # load_1m 最近平均负载,load_5m 5分钟平均负载 ip           heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 172.16.1.236           20          77   0    0.02    0.04     0.05 dilmrt    -      mtNode1 172.16.1.236           70          77   0    0.02    0.04     0.05 dilmrt    -      mtNode3 172.16.1.236           38          77   0    0.02    0.04     0.05 dilmrt    *      mtNode2 
 
默认只返回上面几个列信息,其他的需要自己通过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 查看被挂起的任务
 
14、plugins 查看每个节点正在运行的插件
1 2 3 GET /_cat/plugins GET http://172.16.1.236:9201/_cat/plugins?v&h=id,name,component,version,description 
 
15、recovery 索引分片的恢复视图,包括正在进行和先前已完成的恢复,只要索引分片移动到群集中的其他节点,就会发生恢复事件
1 2 3 GET /_cat/recovery/<target> GET /_cat/recovery 
 
可以添加参数active_only=true仅响应正在进行的分片恢复
16、repositories 返回集群的快照仓库
 
17、shards 返回索引的分片情况,格式:
1 2 3 4 # <target> 可以写具体的索引之外,也支持写 _all或*(通配符),多个索引逗号隔开 GET /_cat/shards/<target> GET /_cat/shards 
 
默认只返回了几个列信息,还有很多列信息
参数 
参数简写 
描述 
 
 
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 信息,
1 2 3 4 # <target> 可以写具体的索引之外,也支持写 _all或*(通配符),多个索引逗号隔开 GET /_cat/segments/<target> GET /_cat/segments 
 
19、snapshots 返回ES的快照仓库,快照也就是ES的备份。
1 2 # <repository> 必选,是一个快照仓库名 GET /_cat/snapshots/<repository> 
 
20、task management 返回有关当前在集群中一个或多个节点上执行的任务的信息。task 管理API,是一个开发版的,未来估计会变了解就好
 
21、templates 返回集群的索引模板
1 2 3 GET /_cat/templates/<template_name> GET /_cat/templates 
 
22、thread pool 返回集群下每个节点的线程池,包括所有内置线程池和自定义线程池
1 2 3 4 5 6 7 8 9 10 11 12 GET /_cat/thread_pool/<thread_pool> GET /_cat/thread_pool 
 
23、trained model 返回训练模型的配置信息,需要 monitor_ml 权限
1 GET /_cat/ml/trained_models 
 
返回transformsp配置与用法信息
1 2 3 4 5 6 7 GET /_cat/transforms/<transform_id> GET /_cat/transforms/_all GET /_cat/transforms/* GET /_cat/transforms 
 
返回有很多列,带上help查看所有列
四、结尾 感觉没必要写那么多,记得第一个请求GET /_cat 就掌握所有了!!!