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.