紧凑对齐文本 (CAT) API

编辑

紧凑对齐文本 (CAT) API编辑

简介编辑

JSON 对计算机来说很棒……即使是格式化的 JSON,尝试在数据中找到关系也很繁琐。人眼,尤其是在查看终端时,需要紧凑对齐的文本。紧凑对齐文本 (CAT) API 旨在满足这一需求。

cat API 仅供使用 Kibana 控制台 或命令行的人类使用。它们适用于应用程序。对于应用程序使用,我们建议使用相应的 JSON API。

所有 cat 命令都接受查询字符串参数 help 以查看它们提供的所有标题和信息,而 /_cat 命令本身列出了所有可用命令。

通用参数编辑

详细编辑

每个命令都接受一个查询字符串参数 v 来打开详细输出。例如

response = client.cat.master(
  v: true
)
puts response
GET _cat/master?v=true

可能会返回

id                     host      ip        node
u_n93zwxThWHi1PDBJAGAg 127.0.0.1 127.0.0.1 u_n93zw

帮助编辑

每个命令都接受一个查询字符串参数 help,它将输出其可用的列。例如

response = client.cat.master(
  help: true
)
puts response
GET _cat/master?help

可能会返回

id   |   | node id
host | h | host name
ip   |   | ip address
node | n | node name

如果使用任何可选 URL 参数,则不支持 help。例如 GET _cat/shards/my-index-000001?helpGET _cat/indices/my-index-*?help 会导致错误。请改用 GET _cat/shards?helpGET _cat/indices?help

标题编辑

每个命令都接受一个查询字符串参数 h,它强制只显示这些列。例如

response = client.cat.nodes(
  h: 'ip,port,heapPercent,name'
)
puts response
GET _cat/nodes?h=ip,port,heapPercent,name

返回

127.0.0.1 9300 27 sLBaIGK

您还可以使用简单的通配符(如 /_cat/thread_pool?h=ip,queue*)请求多个列,以获取所有以 queue 开头的标题(或别名)。

数字格式编辑

许多命令提供几种类型的数字输出,例如字节、大小或时间值。默认情况下,这些类型是人类可读的格式,例如 3.5mb 而不是 3763212。人类可读的值不能按数字排序,因此为了对这些值进行操作(其中顺序很重要),您可以更改它。

假设您想找到集群中最大的索引(所有分片使用的存储空间,而不是文档数量)。/_cat/indices API 是理想的选择。您只需要在 API 请求中添加三件事

  1. 具有 b 值的 bytes 查询字符串参数,以获得字节级分辨率。
  2. 具有 store.size:desc 值的 s(排序)参数,以及一个逗号和 index:asc,以按分片存储空间降序排序,然后按索引名称升序排序。
  3. 用于包含响应中列标题的 v(详细)参数。
response = client.cat.indices(
  bytes: 'b',
  s: 'store.size:desc,index:asc',
  v: true
)
puts response
GET _cat/indices?bytes=b&s=store.size:desc,index:asc&v=true

API 返回以下响应

health status index            uuid                   pri rep docs.count docs.deleted store.size pri.store.size dataset.size
yellow open   my-index-000001  u8FNjxh8Rfy_awN11oDKYQ   1   1       1200            0      72171         72171         72171
green  open   my-index-000002  nYFWZEO7TUiOjLQXBaYJpA   1   0          0            0        230          230            230

如果您想更改 时间单位,请使用 time 参数。

如果您想更改 大小单位,请使用 size 参数。

如果您想更改 字节单位,请使用 bytes 参数。

响应为文本、json、smile、yaml 或 cbor编辑

% curl 'localhost:9200/_cat/indices?format=json&pretty'
[
  {
    "pri.store.size": "650b",
    "health": "yellow",
    "status": "open",
    "index": "my-index-000001",
    "pri": "5",
    "rep": "1",
    "docs.count": "0",
    "docs.deleted": "0",
    "store.size": "650b"
  }
]

当前支持的格式(对于 ?format= 参数): - 文本(默认) - json - smile - yaml - cbor

或者,您可以将 "Accept" HTTP 标头设置为相应的媒体格式。以上所有格式都受支持,GET 参数优先于标头。例如

% curl '192.168.56.10:9200/_cat/indices?pretty' -H "Accept: application/json"
[
  {
    "pri.store.size": "650b",
    "health": "yellow",
    "status": "open",
    "index": "my-index-000001",
    "pri": "5",
    "rep": "1",
    "docs.count": "0",
    "docs.deleted": "0",
    "store.size": "650b"
  }
]

排序编辑

每个命令都接受一个查询字符串参数 s,它根据作为参数值指定的列对表格进行排序。列通过名称或别名指定,并以逗号分隔的字符串形式提供。默认情况下,排序按升序进行。在列后面追加 :desc 将反转该列的排序顺序。 :asc 也被接受,但表现出与默认排序顺序相同的行为。

例如,对于排序字符串 s=column1,column2:desc,column3,表格将按 column1 升序排序,按 column2 降序排序,按 column3 升序排序。

response = client.cat.templates(
  v: true,
  s: 'order:desc,index_patterns'
)
puts response
GET _cat/templates?v=true&s=order:desc,index_patterns

返回

name                  index_patterns order version
pizza_pepperoni       [*pepperoni*]  2
sushi_california_roll [*avocado*]    1     1
pizza_hawaiian        [*pineapples*] 1