LoginSignup
2
0

More than 1 year has passed since last update.

Elasticsearchのもやもや: ドキュメント登録はPOSTかPUTか

Last updated at Posted at 2022-08-25

はじめに

Elasticsearchを使っていて、もやもやした内容を、
メモ書きレベルで、思うがまま書いてみます。

Elasticsearchのドキュメント登録

Elasticsearchの操作は、APIエンドポイントに向かって、
REST APIを用いたリクエストを発行します。

ドキュメント登録リクエストは、HTTPメソッドとして、
POSTまたはPUTを使用できるのは周知のとおりですが、
その違いや使い分けに、モヤモヤ感が。。。

POSTメソッドとPUTメソッドを比較してみた

  • 操作対象のドキュメント
    • POST: 新規にドキュメントを作成
    • PUT: 既存のドキュメントが存在したら更新、存在しなかったら作成
  • ドキュメントIDの指定
    • POST: 不要(サーバーが自動採番してくれる)
    • PUT: 明示的に指定する必要がある
  • 同じリクエストを5回実行したら
    • POST: 異なるドキュメントIDでドキュメントが5個作成される
      • 1回目: ドキュメントID=1
      • 2回目: ドキュメントID=2
      • 3回目: ドキュメントID=3
      • 4回目: ドキュメントID=4
      • 5回目: ドキュメントID=5
    • PUT: ドキュメントが1個しか作成されない(ドキュメントID=1)
      • ※ 2回目以降は、作成ではなく、同じドキュメントIDが更新されるのみ
      • 1回目: ドキュメントID=1を作成
      • 2回目: ドキュメントID=1を更新
      • 3回目: ドキュメントID=1を更新
      • 4回目: ドキュメントID=1を更新
      • 5回目: ドキュメントID=1を更新
  • ドキュメント登録リクエストのサンプル
## POST
$ curl -XPOST 'http://host:port/index' -H 'Content-Type: application/json' -d '
{
    "field1": "value1",
    "field2": "value2",
    ... ...
}'

## PUT
$ curl -XPUT 'http://host:port/index/1' -H 'Content-Type: application/json' -d '
{
    "field1": "value1",
    "field2": "value2",
    ... ...
}'

おわりに

Elasticsearchのドキュメント登録方法として、
POSTメソッドとPUTメソッドの違いが理解できたので、
今後は迷わず使用できそうです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0