Elasticsearch の「中」を素早く覗く — _cat API 活用ガイド

Tech Blog banner with futuristic HUD graphics over a night cityscape; Japanese title 'Elasticsearch の「中」を素早く覗く' and subtitle 'cat API 活用ガイド' with a vertical 'TECH BLOG' label on the right. BLOG

先日のブログ では、AutoOps による Elasticsearch クラスタの監視について紹介しました。 今回は、Kibana の Dev Tools (Console) 上で「今すぐクラスタの状態を知りたい」「具体的な数値をサクッと確認したい」といった場面で非常に重宝する _cat API を紹介します。

1. _cat API とは?

_cat は “Compact and Aligned Text” の略称です。 その名の通り、人間がターミナルやコンソール上で読むことを前提とした「コンパクトで整列されたテキスト形式」で情報を返してくれる API 群です。

なぜ _cat を使うのか?

  • 圧倒的な可読性: デフォルトで表形式(Tabular format)で出力されるため、構造が一目でわかります。
  • CLI フレンドリー: grep や awk、sort といった UNIX コマンドとの相性が抜群です。
  • 軽量・高速: 余計な JSON メタデータが含まれないためレスポンスが速く、帯域も消費しません。

2. 運用効率を劇的に上げる共通パラメータ

どの _cat エンドポイントでも利用できる、必須級のパラメータを紹介します。

パラメータ説明使用例
v (verbose)ヘッダー行を表示。これがないと列の意味がわからないため、ほぼ必須です。/_cat/indices?v
helpその API で出力可能なカラム一覧と説明を表示します。/_cat/nodes?help
h (headers)表示するカラムを指定(フィルタリング)します。/_cat/indices?h=index,docs.count
s (sort)指定したカラムでソートします(昇順/降順の指定も可)。/_cat/indices?s=docs.count:desc
format出力形式の指定。JSON や YAML 形式での出力も可能です。/_cat/health?format=json
bytesサイズ表記を固定します (b, kb, mb, gb)。比較に便利です。/_cat/indices?bytes=mb

3. 現場で多用する主要エンドポイント

トラブルシューティングやキャパシティプランニングで特に役立つものを厳選しました。

3.1. クラスタの健康診断: /_cat/health

クラスタ全体のステータス(green/yellow/red)やノード数、シャードの状態を 1 行で把握できます。

GET /_cat/health?v
  • Check Point: status が yellow や red の場合、unassign(未割り当てシャード)の数を確認しましょう。

3.2. ノードのリソース確認: /_cat/nodes

各ノードの CPU 使用率、メモリ使用量、ロードアベレージ、役割(role)などを一覧表示します。

GET /_cat/nodes?v&h=ip,name,role,cpu,heap.percent,load_1m

特定のノードに負荷が偏っていないか、Heap メモリが逼迫していないかを瞬時に特定できます。

3.3. インデックスの統計: /_cat/indices

インデックスごとのドキュメント数やストレージ容量を確認できます。

  • Tips: s=store.size:desc を付けると、容量を圧迫しているインデックスを即座に特定できます。
GET /_cat/indices?v&s=store.size:desc

応用編:特定の名前を持つインデックスのみを対象にする。

GET /_cat/indices/*kibana*?v&s=store.size:desc

3.4. シャードの配置状況: /_cat/shards

どのシャードがどのノードに配置されているか、INITIALIZING(初期化中)や UNASSIGNED(未割り当て)なシャードがないかを調査する際に重宝します。

GET /_cat/shards?v&s=state

4. 実践的な活用例:CLI との組み合わせ

_cat API は、curl と組み合わせることで真価を発揮します。

ストレージを圧迫しているトップ5インデックスを探す。

# 容量(store.size)が大きい順にソートし、ヘッダーを含めた上位6行を表示
curl -u user:pass -X GET "http://localhost:9200/_cat/indices?v&s=store.size:desc" | head -n 6

出力例:

health status index         uuid                   pri rep docs.count docs.deleted store.size pri.store.size dataset.size
green  open   logs-2026.04  _pK_TOLwQKepPxXSu56...   1   1    1540740            0     1.2gb         614.4mb ...
green  open   metrics-2026  9MYQYnnBSyuKaDp7t9q...   1   1     850200            0   840.5mb         420.2mb ...
...

5. _cat API のエンドポイント一覧(抜粋)

下記に _cat API のエンドポイント一覧の抜粋を掲示しておきます。

Endpoint説明
/_cat/aliasesエイリアスの一覧表示
/_cat/allocationシャードの割り当て情報表示
/_cat/component_templatesコンポーネントテンプレートの一覧表示
/_cat/countクラスタ全体(またはインデックス全体)のドキュメント数の表示
/_cat/healthクラスタの健康診断
/_cat/indicesインデックスの一覧表示
/_cat/masterマスターノード情報の表示
/_cat/ml/anomaly_detectorsAnomaly Detection Job の一覧表示
/_cat/ml/trained_modelsTrained Model の一覧表示
/_cat/nodeattrsノード属性の一覧表示
/_cat/nodesノードの一覧表示
/_cat/pluginsプラグインの一覧表示
/_cat/recoveryリカバリー情報の表示
/_cat/repositoriesスナップショットリポジトリ情報の一覧表示
/_cat/segmentsセグメント情報の表示
/_cat/shardsシャードの一覧表示
/_cat/snapshotsスナップショット情報の表示
/_cat/tasksタスク情報の一覧表示
/_cat/templatesインデックステンプレート情報の一覧表示
/_cat/transformsTransform情報の表示

他にもあります。

詳細は、Elastic 公式ドキュメント – _cat APIs を参照してください。

まとめ

_cat API はエンジニアの「目」であるElasticsearch の運用において、_cat API は単なる便利ツールではなく、クラスタの「今」を素早く正確に捉えるための必須装備です。 JSON レスポンスをパースするスクリプトを書く前に、まずは ?help でカラムを調べ、?v と ?h で自分専用のビューを作ってみてください。 ターミナルが、より強力な監視ダッシュボードに変わるはずです。

  • [!CAUTION]注意: _cat API はあくまで人間用です。アプリケーションからプログラム的に情報を取得する場合は、通常のエンドポイント(JSON レスポンスを返す API)を使用することが推奨されます。