put是於目標地址創建文檔,post是在目標地址下創建文檔。如:
curl -XPUT http://127.0.0.1:9200/megacorp/employee/3 -d '{"name":"star","age":25}'
curl -XPOST http://127.0.0.1:9200/megacorp/employee -d '{"name":"star","age":25}'
上面示例中,put的路徑是有id的,index+type+id唯一,我們自己指定了id,而post中路徑是沒有id的,數據提交由ES生成id。
同時put和post也遵循http的約定,put是冪等操作,多次操作put會更新原有記錄(ES中先刪除再創建),id是相同的,而post不是冪等的,多次提交會產生多條不同的記錄(id不同)。
當然,ES中post也可以指定id,多次請求同樣會覆蓋之前的數據,也是冪等操作,此時post作用等同於put。