POST与PUT区别:
POST理解为新增,PUT理解为更新。因此,在curl -XPUT 中需要指定id。而POST的话,ES会自动创建id。 PUT会将新的json值完全替换掉旧的;而POST方式只会更新相同字段的值,其他数据不会改变,新提交的字段若不存在则增加。 PUT和DELETE操作是幂等的。所谓幂等是指不管进行多少次操作,结果都一样。比如用PUT修改一篇文章,然后在做同样的操作,每次操作后的结果并没有什么不同,DELETE也是一样。POST操作不是幂等的,比如常见的POST重复加载问题:当我们多次发出同样的POST请求后,其结果是创建了若干的资源。 ?
//create document 自动生成_id POST users/_doc { ? "user" : "Mike", ? ? "post_date" : "2019-04-15T14:12:12", ? ? "message" : "trying out Kibana" }
//create document. 指定id. 如果ID已经存在,报错 PUT users/_doc/1?op_type=create { ? ? "user" : "Jack", ? ? "post_date" : "2019-05-15T14:12:12", ? ? "message" : "trying out Elasticsearch" }
//GET the document by id GET users/_doc/1
//index 方式 ?默认 PUT users/_doc/1 { ? "user" : "Mike" }
//在原文档上增加字段 update方式
POST users/_update/1 { ? "doc":{ ? ? "post_date":"2019-05-15T14:12:12", ? ? "message":"trying out Elasticsearch" ? } }
//### Bulk 操作 //执行两次,查看每次的结果
//执行第一次 POST _bulk {"index":{"_index":"test","_id":"1"}} {"field1":"value1"} {"delete":{"_index":"test","_id":"2"}} {"create":{"_index":"test2","_id":"3"}} {"field1":"value3"} {"update":{"_id":"1","_index":"test"}} {"doc":{"field2":"value2"}}
//执行第2次 POST _bulk {"index":{"_index":"test","_id":"1"}} {"field1":"value1"} {"delete":{"_index":"test","_id":"2"}} {"create":{"_index":"test2","_id":"3"}} {"field1":"value3"} {"update":{"_id":"1","_index":"test"}} {"doc":{"field2":"value2"}}
GET test/_doc/1
//### mget 操作 GET /_mget { ? "docs": ? [ ? ? { ? ? ? "_index":"test", ? ? ? "_id":"1" ? ? }, ? ? { ? ? ? "_index":"test", ? ? ? "_id":"2" ? ? } ? ] }
//### msearch 操作 POST kibana_sample_data_ecommerce/_msearch {} {"query":{"match_all":{}},"size":1} {"index":"kibana_sample_data_flights"} {"query":{"match_all":{}},"size":2}
|