はじめに
Elasticsearchを使っていて、もやもやした内容を、
メモ書きレベルで、思うがまま書いてみます。
Elasticsearchのドキュメント更新
Elasticsearchのドキュメント更新リクエストは、
PUTメソッドまたはPOSTメソッドを使用します。
その違いや使い分けに、モヤモヤ感が。。。
PUTとPOSTによるドキュメント更新を比較してみた
-
更新範囲の違い
- PUT: 指定ドキュメントIDを持つドキュメントを丸ごと置き換える(※ Elasticsearchリファレンスを参照)
PUT test/_doc/1 { "counter" : 1, "tags" : ["red"] }
- POST: 指定ドキュメントIDを持つドキュメントの一部フィールドを置き換える
- 方法1:
doc
句による更新(※ Elasticsearchリファレンスを参考)
POST test/_update/1 { "doc": { "name": "new_name" } }
- 方法2:
script
句による更新
POST test/_update/1 { "script" : { "source": "ctx._source.counter += params.count", "lang": "painless", "params" : { "count" : 4 } } }
- 方法1:
-
ドキュメントの再インデックス
- 両者ともにインデックスが再作成され、ドキュメントのバージョンが上がる
おわりに
Elasticsearchのドキュメント更新方法として、
POSTがスクリプトを使用でき、PUTより柔軟に利用できそうです。