Elasticsearchでcat shards APIを使いshardがどこのnodeに割り当てられているかを確認する

Elasticsearchでshardがcluster内のどこのnodeに属しているか確認したいと思うことがあったので、表示方法を調べてみました。

Elasticsearchに対するREST APIは以下のドキュメントから調べることができます。

REST APIs | Elasticsearch Guide [8.1] | Elastic

REST APIs にはElasticsearchに対するREST API操作の列挙とその操作内容について記載されています。他のドキュメントもそうですが、elastic-stackのドキュメントはよく整理されていて、例えばREST APIは操作のカテゴリごとにまとまっています。探すのが楽だし、理解しやすいので助かりますね。

cat shards API

cat shards APIを叩くことでshardごとの情報を確認できます。例えば、shardがどのindex、nodeに属しているか。primary shardか、replica shardか、等を確認できます。

cat shards API | Elasticsearch Guide [8.1] | Elastic

以下、実行例です。

GET _cat/shards?format=json

[
  {
    "index" : ".kibana-event-log-8.0.0-000001",
    "shard" : "0",
    "prirep" : "p",
    "state" : "STARTED",
    "docs" : null,
    "store" : null,
    "ip" : "172.18.0.6",
    "node" : "esmaster"
  },
  {
    "index" : ".apm-agent-configuration",
    "shard" : "0",
    "prirep" : "p",
    "state" : "STARTED",
    "docs" : null,
    "store" : null,
    "ip" : "172.18.0.6",
    "node" : "esmaster"
  },
  // 以下略

パスにindex名を指定したり、ワイルドカードを用いて検索対象のshardを絞り込むことも可能です。

GET _cat/shards/index-*?format=json

これで、レスポンスの中身を見ればどのnodeにshardが属しているかがわかりますね。

ちなみに、 prirep フィールドで示されている値は、 p の場合primary shard、 r の場合replica shardとなります。

Written with StackEdit.