コンパクトで整列されたテキスト (CAT) API
はじめに
JSONは素晴らしい…コンピュータにとっては。たとえきれいに印刷されていても、データ内の関係を見つけるのは面倒です。特にターミナルを見ているとき、人間の目はコンパクトで整列されたテキストを必要とします。コンパクトで整列されたテキスト (CAT) APIは、このニーズに応えることを目的としています。
cat APIは、Kibanaコンソールまたはコマンドラインを使用して人間が消費することを意図しています。アプリケーションによる使用は意図されていません。アプリケーションでの使用には、対応するJSON APIを使用することをお勧めします。
すべてのcatコマンドは、提供するすべてのヘッダーと情報を表示するためのクエリ文字列パラメータhelp
を受け入れ、/_cat
コマンド単独で利用可能なすべてのコマンドをリストします。
共通のパラメータ
詳細表示
各コマンドは、詳細な出力を有効にするためのクエリ文字列パラメータv
を受け入れます。例えば:
Python
resp = client.cat.master(
v=True,
)
print(resp)
Ruby
response = client.cat.master(
v: true
)
puts response
Js
const response = await client.cat.master({
v: "true",
});
console.log(response);
コンソール
GET _cat/master?v=true
次のように応答する可能性があります:
Txt
id host ip node
u_n93zwxThWHi1PDBJAGAg 127.0.0.1 127.0.0.1 u_n93zw
ヘルプ
各コマンドは、利用可能な列を出力するクエリ文字列パラメータhelp
を受け入れます。例えば:
Python
resp = client.cat.master(
help=True,
)
print(resp)
Ruby
response = client.cat.master(
help: true
)
puts response
Js
const response = await client.cat.master({
help: "true",
});
console.log(response);
コンソール
GET _cat/master?help
次のように応答する可能性があります:
Txt
id | | node id
host | h | host name
ip | | ip address
node | n | node name
help
は、任意のオプションのURLパラメータが使用されている場合はサポートされていません。例えば、GET _cat/shards/my-index-000001?help
またはGET _cat/indices/my-index-*?help
はエラーを引き起こします。代わりにGET _cat/shards?help
またはGET _cat/indices?help
を使用してください。
ヘッダー
各コマンドは、特定の列のみを表示するためのクエリ文字列パラメータh
を受け入れます。例えば:
Python
resp = client.cat.nodes(
h="ip,port,heapPercent,name",
)
print(resp)
Ruby
response = client.cat.nodes(
h: 'ip,port,heapPercent,name'
)
puts response
Js
const response = await client.cat.nodes({
h: "ip,port,heapPercent,name",
});
console.log(response);
コンソール
GET _cat/nodes?h=ip,port,heapPercent,name
次のように応答します:
Txt
127.0.0.1 9300 27 sLBaIGK
### 数値形式
多くのコマンドは、バイト、サイズ、または時間値のいくつかのタイプの数値出力を提供します。デフォルトでは、これらのタイプは人間がフォーマットしたもので、例えば`````3.5mb`````ではなく`````3763212`````です。人間の値は数値的にソートできないため、順序が重要なこれらの値を操作するには、変更することができます。
たとえば、クラスター内の最大インデックスを見つけたい場合(すべてのシャードによって使用されるストレージ、ドキュメントの数ではありません)。`````/_cat/indices````` APIが理想的です。APIリクエストに3つのことを追加するだけです:
- 1*.* バイトレベルの解像度を取得するために`````bytes`````クエリ文字列パラメータに`````b`````の値を設定します。
- 2*.* 出力をシャードストレージの降順でソートし、次にインデックス名の昇順でソートするために、`````s`````(ソート)パラメータに`````store.size:desc`````の値と`````index:asc`````をカンマで追加します。
- 3*.* 応答に列見出しを含めるために`````v`````(詳細表示)パラメータを使用します。
#### Python
``````python
resp = client.cat.indices(
bytes="b",
s="store.size:desc,index:asc",
v=True,
)
print(resp)
`
Ruby
response = client.cat.indices(
bytes: 'b',
s: 'store.size:desc,index:asc',
v: true
)
puts response
Js
const response = await client.cat.indices({
bytes: "b",
s: "store.size:desc,index:asc",
v: "true",
});
console.log(response);
コンソール
GET _cat/indices?bytes=b&s=store.size:desc,index:asc&v=true
APIは次の応答を返します:
Txt
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で昇順にソートされます。
Python
resp = client.cat.templates(
v=True,
s="order:desc,index_patterns",
)
print(resp)
Ruby
response = client.cat.templates(
v: true,
s: 'order:desc,index_patterns'
)
puts response
Js
const response = await client.cat.templates({
v: "true",
s: "order:desc,index_patterns",
});
console.log(response);
コンソール
GET _cat/templates?v=true&s=order:desc,index_patterns
返します:
Txt
name index_patterns order version
pizza_pepperoni [*pepperoni*] 2
sushi_california_roll [*avocado*] 1 1
pizza_hawaiian [*pineapples*] 1