クラスタ状態API
デバッグや診断目的のために、クラスタ状態の内部表現を返します。
リクエスト
GET /_cluster/state/<metrics>/<target>
前提条件
- Elasticsearchのセキュリティ機能が有効になっている場合、このAPIを使用するには
monitor
またはmanage
クラスタ特権が必要です。
説明
クラスタ状態は、各ノードが必要とするさまざまな情報を追跡する内部データ構造です。これには以下が含まれます:
- クラスタ内の他のノードの識別情報と属性
- クラスタ全体の設定
- 各インデックスのマッピングと設定を含むインデックスメタデータ
- クラスタ内の各シャードコピーの位置と状態
選出されたマスターノードは、クラスタ内のすべてのノードが同じクラスタ状態のコピーを持つことを保証します。クラスタ状態APIを使用すると、この内部状態の表現をデバッグや診断目的で取得できます。応答の正確な意味を判断するには、Elasticsearchのソースコードを参照する必要があるかもしれません。
デフォルトでは、クラスタ状態APIは選出されたマスターノードにリクエストをルーティングします。このノードはクラスタ状態の権威あるソースです。また、クエリパラメータ?local=true
を追加することで、APIリクエストを処理しているノードに保持されているクラスタ状態を取得することもできます。
Elasticsearchは、大規模なクラスタでこのAPIに対する応答を計算するためにかなりの労力を費やす必要があるかもしれません。また、応答は非常に大量のデータを含む可能性があります。このAPIを繰り返し使用すると、クラスタが不安定になる可能性があります。
応答は内部データ構造の表現です。その形式は、他のより安定したAPIと同じ互換性保証の対象ではなく、バージョンごとに変更される可能性があります。外部監視ツールを使用してこのAPIをクエリしないでください。 代わりに、他のより安定したクラスタAPIを使用して必要な情報を取得してください。
パスパラメータ
クラスタ状態は非常に大きくなることがあり、ElasticsearchはこのAPIに対する応答を計算する際にかなりのリソースを消費する可能性があります。応答のサイズを減らすために、興味のあるクラスタ状態の部分のみをリクエストできます:
<metrics>
- (オプション、文字列) 次のオプションのカンマ区切りリスト:
_all
- すべてのメトリックを表示します。
blocks
- 応答の
blocks
部分を表示します。 master_node
- 応答の
master_node
部分を表示します。 metadata
- 応答の
metadata
部分を表示します。 カンマ区切りのインデックスリストを提供すると、返される出力にはこれらのインデックスのメタデータのみが含まれます。 nodes
- 応答の
nodes
部分を表示します。 routing_nodes
- 応答の
routing_nodes
部分を表示します。 routing_table
- 応答の
routing_table
部分を表示します。 カンマ区切りのインデックスリストを提供すると、返される出力にはこれらのインデックスのルーティングテーブルのみが含まれます。 version
- クラスタ状態のバージョンを表示します。
<target>
- (オプション、文字列) リクエストを制限するために使用されるデータストリーム、インデックス、およびエイリアスのカンマ区切りリスト。ワイルドカード(
*
)をサポートします。すべてのデータストリームとインデックスを対象とするには、このパラメータを省略するか、*
または_all
を使用します。
クエリパラメータ
allow_no_indices
- (オプション、ブール値)
true
の場合、具体的なインデックスに解決されないワイルドカードインデックス式は無視されます。(これは_all
文字列やインデックスが指定されていない場合を含みます)。
デフォルトはtrue
です。 expand_wildcards
- (オプション、文字列) ワイルドカード式を開いている、閉じている、またはその両方の具体的なインデックスに展開するかどうか。利用可能なオプション:
open
、closed
、none
、all
。 flat_settings
- (オプション、ブール値)
true
の場合、設定をフラット形式で返します。デフォルトはfalse
です。 ignore_unavailable
- (オプション、ブール値)
true
の場合、利用できないインデックス(欠落または閉じている)は無視されます。 local
- (オプション、ブール値)
true
の場合、リクエストはローカルノードからのみ情報を取得します。デフォルトはfalse
で、これはマスターノードから情報を取得することを意味します。 master_timeout
- (オプション、時間単位) マスターノードを待つ期間。タイムアウトが切れる前にマスターノードが利用できない場合、リクエストは失敗し、エラーを返します。デフォルトは
30s
です。リクエストが決してタイムアウトしないことを示すために-1
に設定することもできます。 wait_for_metadata_version
- (オプション、整数) メタデータバージョンが指定されたメタデータバージョン以上になるまで待ちます。
wait_for_timeout
- (オプション、時間単位) タイムアウトする前にwait_for_metadata_versionの最大待機時間を指定します。
例
次の例は、metadata
およびrouting_table
データをfoo
およびbar
データストリームまたはインデックスのために返します:
Python
resp = client.cluster.state(
metric="metadata,routing_table",
index="foo,bar",
)
print(resp)
Ruby
response = client.cluster.state(
metric: 'metadata,routing_table',
index: 'foo,bar'
)
puts response
Js
const response = await client.cluster.state({
metric: "metadata,routing_table",
index: "foo,bar",
});
console.log(response);
コンソール
GET /_cluster/state/metadata,routing_table/foo,bar
次の例は、foo
およびbar
のすべての利用可能なメタデータを返します:
Python
resp = client.cluster.state(
metric="_all",
index="foo,bar",
)
print(resp)
Ruby
response = client.cluster.state(
metric: '_all',
index: 'foo,bar'
)
puts response
Js
const response = await client.cluster.state({
metric: "_all",
index: "foo,bar",
});
console.log(response);
コンソール
GET /_cluster/state/_all/foo,bar
この例は、blocks
メタデータのみを返します:
Python
resp = client.cluster.state(
metric="blocks",
)
print(resp)
Ruby
response = client.cluster.state(
metric: 'blocks'
)
puts response
Js
const response = await client.cluster.state({
metric: "blocks",
});
console.log(response);
コンソール
GET /_cluster/state/blocks