Elasticsearch的困惑之处:文档更新是使用PUT还是POST?
首先
我使用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
}
}
}
ドキュメントの再インデックス
両者ともにインデックスが再作成され、ドキュメントのバージョンが上がる
最后
作为Elasticsearch文档的更新方法,
POST可以使用脚本,并且似乎比PUT更灵活可用。