Openserachのドキュメントを読むと、APIに関連する大概の場面で以下のような表記が用いられています。
GET /_nodes/_cluster_manager/stats
初めて見た時はよくあるAPIのメソッドとパスの表記だろうと思ったんですが、なかなか混乱したのはこのパスを直接叩いて結果を取得しているような記載が、さまざまなブログなどで見受けられたことです。
例としては以下のような書き方です。
GET _cluster/health
{
"cluster_name": "opensearch-cluster",
"status": "green",
"timed_out": false,
"number_of_nodes": 2,
"number_of_data_nodes": 2,
"discovered_master": true,
"discovered_cluster_manager": true,
"active_primary_shards": 10,
"active_shards": 20,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 0,
"delayed_unassigned_shards": 0,
"number_of_pending_tasks": 0,
"number_of_in_flight_fetch": 0,
"task_max_waiting_in_queue_millis": 0,
"active_shards_percent_as_number": 100
}
Opensearch界隈にはホスト名を略す文化があるのか、あるいは他の理由か悩みましたが、少し勉強してみたらすぐ氷解したので、備忘録を兼ねて残しておこうと思います。
外部からAPIを叩く場合
Opensearch以外の一般的なケース同様、このAPIを外部から叩こうとした場合、パスの前にそのOpensearchクラスタのURLを補ってやる必要があります。例えばlocalhost:9200
上で動作しているクラスタに対しては以下のようになります。
curl http://localhost:9200/_nodes/_cluster_manager/stats
実際のURLはhttpsや認証が有効になっているかどうかで多少変化します。例えばOpensearchのquickstartに載っている例だと、httpsが有効かつ認証が必要ということで、以下のようになっています。
curl https://localhost:9200 -ku admin:<custom-admin-password>
<custom-admin-password>
は起動時に設定したadminユーザのパスワードです。
このケースは他のREST APIと変わらないので、理解しやすいのではないでしょうか。
dev toolを使用する場合
Opensearchのweb consoleにはdev toolというツールが用意されており、こちらを経由してOpensearchのAPIにリクエストを送ることもできます。
https://opensearch.org/docs/latest/getting-started/communicate/#sending-requests-in-dev-tools
この場合、使用するHTTPメソッド名とAPIのパスを記載するだけでそのAPIを叩くことができます。
冒頭で述べた、パスを直接叩いて結果を取得しているような記載というのは、このdev toolを使用したケースのことで、スクリーンショットを貼り付けるのではなく左画面の入力と右画面の出力を貼り付けていたようです。
bodyが必要なAPIをcurlなどのツールで叩く場合、引数の設定などがやや面倒になりますが、dev toolを使う場合はパスを指定したあと、直接bodyを記述することができるのが便利な点だと思います。以下はindexを追加する例です。
PUTメソッドを使用しているので、bodyを指定する必要がありますが、dev toolの場合パスの後に直接記述することができます。
まとめ
OpensearchのAPIを利用する場合、外部からURLにアクセスする方法と、web consoleからdev toolを使用する方法があります。
外部からURLにアクセスする方法に比べ、dev toolを使用した場合、パスの指定を短くしたり、bodyの記述がやりやすくなったりします。