コンパクトで整列されたテキスト (CAT) API

はじめに

JSONは素晴らしい…コンピュータにとっては。たとえきれいに印刷されていても、データ内の関係を見つけるのは面倒です。特にターミナルを見ているとき、人間の目はコンパクトで整列されたテキストを必要とします。コンパクトで整列されたテキスト (CAT) APIは、このニーズに応えることを目的としています。

cat APIは、Kibanaコンソールまたはコマンドラインを使用して人間が消費することを意図しています。アプリケーションによる使用は意図されていません。アプリケーションでの使用には、対応するJSON APIを使用することをお勧めします。

すべてのcatコマンドは、提供するすべてのヘッダーと情報を表示するためのクエリ文字列パラメータhelpを受け入れ、/_catコマンド単独で利用可能なすべてのコマンドをリストします。

共通のパラメータ

詳細表示

各コマンドは、詳細な出力を有効にするためのクエリ文字列パラメータvを受け入れます。例えば:

Python

  1. resp = client.cat.master(
  2. v=True,
  3. )
  4. print(resp)

Ruby

  1. response = client.cat.master(
  2. v: true
  3. )
  4. puts response

Js

  1. const response = await client.cat.master({
  2. v: "true",
  3. });
  4. console.log(response);

コンソール

  1. GET _cat/master?v=true

次のように応答する可能性があります:

Txt

  1. id host ip node
  2. u_n93zwxThWHi1PDBJAGAg 127.0.0.1 127.0.0.1 u_n93zw

ヘルプ

各コマンドは、利用可能な列を出力するクエリ文字列パラメータhelpを受け入れます。例えば:

Python

  1. resp = client.cat.master(
  2. help=True,
  3. )
  4. print(resp)

Ruby

  1. response = client.cat.master(
  2. help: true
  3. )
  4. puts response

Js

  1. const response = await client.cat.master({
  2. help: "true",
  3. });
  4. console.log(response);

コンソール

  1. GET _cat/master?help

次のように応答する可能性があります:

Txt

  1. id | | node id
  2. host | h | host name
  3. ip | | ip address
  4. 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

  1. resp = client.cat.nodes(
  2. h="ip,port,heapPercent,name",
  3. )
  4. print(resp)

Ruby

  1. response = client.cat.nodes(
  2. h: 'ip,port,heapPercent,name'
  3. )
  4. puts response

Js

  1. const response = await client.cat.nodes({
  2. h: "ip,port,heapPercent,name",
  3. });
  4. console.log(response);

コンソール

  1. GET _cat/nodes?h=ip,port,heapPercent,name

次のように応答します:

Txt

  1. 127.0.0.1 9300 27 sLBaIGK
  1. ### 数値形式
  2. 多くのコマンドは、バイト、サイズ、または時間値のいくつかのタイプの数値出力を提供します。デフォルトでは、これらのタイプは人間がフォーマットしたもので、例えば`````3.5mb`````ではなく`````3763212`````です。人間の値は数値的にソートできないため、順序が重要なこれらの値を操作するには、変更することができます。
  3. たとえば、クラスター内の最大インデックスを見つけたい場合(すべてのシャードによって使用されるストレージ、ドキュメントの数ではありません)。`````/_cat/indices````` APIが理想的です。APIリクエストに3つのことを追加するだけです:
  4. - 1*.* バイトレベルの解像度を取得するために`````bytes`````クエリ文字列パラメータに`````b`````の値を設定します。
  5. - 2*.* 出力をシャードストレージの降順でソートし、次にインデックス名の昇順でソートするために、`````s`````(ソート)パラメータに`````store.size:desc`````の値と`````index:asc`````をカンマで追加します。
  6. - 3*.* 応答に列見出しを含めるために`````v`````(詳細表示)パラメータを使用します。
  7. #### Python
  8. ``````python
  9. resp = client.cat.indices(
  10. bytes="b",
  11. s="store.size:desc,index:asc",
  12. v=True,
  13. )
  14. print(resp)
  15. `

Ruby

  1. response = client.cat.indices(
  2. bytes: 'b',
  3. s: 'store.size:desc,index:asc',
  4. v: true
  5. )
  6. puts response

Js

  1. const response = await client.cat.indices({
  2. bytes: "b",
  3. s: "store.size:desc,index:asc",
  4. v: "true",
  5. });
  6. console.log(response);

コンソール

  1. GET _cat/indices?bytes=b&s=store.size:desc,index:asc&v=true

APIは次の応答を返します:

Txt

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

時間単位を変更したい場合は、timeパラメータを使用します。

サイズ単位を変更したい場合は、sizeパラメータを使用します。

バイト単位を変更したい場合は、bytesパラメータを使用します。

テキスト、json、smile、yaml、またはcborとしての応答

  1. % curl 'localhost:9200/_cat/indices?format=json&pretty'
  2. [
  3. {
  4. "pri.store.size": "650b",
  5. "health": "yellow",
  6. "status": "open",
  7. "index": "my-index-000001",
  8. "pri": "5",
  9. "rep": "1",
  10. "docs.count": "0",
  11. "docs.deleted": "0",
  12. "store.size": "650b"
  13. }
  14. ]

現在サポートされている形式(?format=パラメータ用): - テキスト(デフォルト) - json - smile - yaml - cbor

または、適切なメディア形式に対して”Accept” HTTPヘッダーを設定できます。上記のすべての形式がサポートされており、GETパラメータがヘッダーよりも優先されます。例えば:

  1. % curl '192.168.56.10:9200/_cat/indices?pretty' -H "Accept: application/json"
  2. [
  3. {
  4. "pri.store.size": "650b",
  5. "health": "yellow",
  6. "status": "open",
  7. "index": "my-index-000001",
  8. "pri": "5",
  9. "rep": "1",
  10. "docs.count": "0",
  11. "docs.deleted": "0",
  12. "store.size": "650b"
  13. }
  14. ]

ソート

各コマンドは、指定された列によってテーブルをソートするクエリ文字列パラメータsを受け入れます。列は名前またはエイリアスで指定され、カンマ区切りの文字列として提供されます。デフォルトでは、ソートは昇順で行われます。列に:descを追加すると、その列の順序が反転します。:ascも受け入れられますが、デフォルトのソート順と同じ動作を示します。

たとえば、ソート文字列s=column1,column2:desc,column3を使用すると、テーブルはcolumn1で昇順、column2で降順、column3で昇順にソートされます。

Python

  1. resp = client.cat.templates(
  2. v=True,
  3. s="order:desc,index_patterns",
  4. )
  5. print(resp)

Ruby

  1. response = client.cat.templates(
  2. v: true,
  3. s: 'order:desc,index_patterns'
  4. )
  5. puts response

Js

  1. const response = await client.cat.templates({
  2. v: "true",
  3. s: "order:desc,index_patterns",
  4. });
  5. console.log(response);

コンソール

  1. GET _cat/templates?v=true&s=order:desc,index_patterns

返します:

Txt

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