Elasticsearch之CURL命令的PUT和POST对比
PUT是幂等方法,而POST并不是。
PUT用于更新操作,POST用于新增操作比较合适。
PUT,DELETE操作是幂等的,所谓幂等就是指不管进行多少次操作,结果都一样。
比如,我用PUT修改一篇文章,然后在做同样的操作,每次操作后的结果并没有不同,DELETE也是一样。
POST操作不是幂等,比如常见的POST重复加载问题:当我们多次发出同样的POST请求后,其结果是创建出了若干的资源。
还有一点需要注意的是,创建操作可以使用POST,也可以使用PUT。区别在于POST是作用在一个集合资源之上的(/articles),而PUT操作是作用在一个具体资源之上的(/articles/123),比如说很多资源使用数据库自增主键作为标识信息,而创建的资源的标识信息到底是什么只能由服务端提供,这个时候就必须使用POST。

[hadoop@master elasticsearch-2.4.]$ curl -XPOST http://master:9200/zhouls/user/1 -d '{"name" : "john" , "age" : 28}'
{"_index":"zhouls","_type":"user","_id":"","_version":,"_shards":{"total":,"successful":,"failed":},"created":true}[hadoop@master elasticsearch-2.4.]$
[hadoop@master elasticsearch-2.4.]$
zhouls是索引,user是类型,1是id
[hadoop@master elasticsearch-2.4.]$ curl -XPOST http://master:9200/zhouls/user -d '{"name" : "john"}'
{"_index":"zhouls","_type":"user","_id":"AVz5Q9u7U8bDb6QDgbDS","_version":,"_shards":{"total":,"successful":,"failed":},"created":true}[hadoop@master elasticsearch-2.4.]$
[hadoop@master elasticsearch-2.4.]$
zhouls是索引,user是类型
由此,可见,如果,我们不指定id,则会自动随机生成
POST方式是自增id,PUT是必须要跟上id。
[hadoop@master elasticsearch-2.4.]$ curl -XPUT http://master:9200/zhouls/user/2?op_type=create -d '{"name" : "john" , "age" : 28}'
{"_index":"zhouls","_type":"user","_id":"","_version":,"_shards":{"total":,"successful":,"failed":},"created":true}[hadoop@master elasticsearch-2.4.]$
[hadoop@master elasticsearch-2.4.]$
zhouls是索引,user是类型,2是id,
?op_type=create是
[hadoop@master elasticsearch-2.4.]$ curl -XPUT http://master:9200/zhouls/user/2/_create -d '{"name" : "john" , "age" : 28}'
{"error":{"root_cause":[{"type":"document_already_exists_exception","reason":"[user][2]: document already exists","index":"zhouls","shard":""}],"type":"document_already_exists_exception","reason":"[user][2]: document already exists","index":"zhouls","shard":""},"status":}[hadoop@master elasticsearch-2.4.]$
[hadoop@master elasticsearch-2.4.]$
zhouls是索引,user是类型,2是id,
_create是 由此,可见,PUT是不允许,已经创建过的id,再来创建。
[hadoop@master elasticsearch-2.4.]$
[hadoop@master elasticsearch-2.4.]$ curl -XPUT http://master:9200/zhouls/user/3/_create -d '{"name" : "john" , "age" : 28}'
{"_index":"zhouls","_type":"user","_id":"","_version":,"_shards":{"total":,"successful":,"failed":},"created":true}[hadoop@master elasticsearch-2.4.]$
[hadoop@master elasticsearch-2.4.]$
[hadoop@master elasticsearch-2.4.]$

Elasticsearch之CURL命令的PUT和POST对比的更多相关文章
- Elasticsearch之CURL命令的GET
这是个查询命令. 前期博客 Elasticsearch之CURL命令的PUT和POST对比 1. 以上是根据员工id查询. 即在任意的查询字符串中添加pretty参数,es可以得到易于我们识别的jso ...
- Elasticsearch之CURL命令的UPDATE
对于,Elasticsearch之CURL命令的UPDATE包括局部更新和全部更新.可以去看我写的另一篇博客. Elasticsearch之更新(全部更新和局部更新) 总结: ES全部更新,使用PUT ...
- elasticsearch(3) curl命令
curl 操作http的get/post/put/delete CURL 命令参数-a/--append 上传文件时,附加到目标文件-A/--user-agent <string> 设置用 ...
- Elasticsearch之CURL命令的DELETE
也可以看我写的下面的博客 Elasticsearch之curl删除 Elasticsearch之curl删除索引库 删除,某一条数据,如下 [hadoop@master elasticsearch-] ...
- Elasticsearch之CURL命令的mget查询
我这里, 再,创建一个zhouls2的索引库. [hadoop@master elasticsearch-]$ curl -XPUT 'http://master:9200/zhouls2/' {]$ ...
- Elasticsearch之CURL命令的version控制
普通关系型数据库使用的是(悲观并发控制(PCC)) 当我们在修改一个数据前先锁定这一行,然后确保只有读取到数据的这个线程可以修改这一行数据 ES使用的是(乐观并发控制(OCC)) ES不会阻止某一数据 ...
- Elasticsearch之CURL命令的bulk批量操作
大家,也可去看看我下面的博客 Elasticsearch之批量操作bulk 官网上,是举例了新建一个requests文件. [hadoop@master elasticsearch-]$ pwd /h ...
- Elasticsearch之CURL命令的DSL查询
它是Domain Specific Language领域特定语言. https://www.elastic.co/guide/en/elasticsearch/reference/current/in ...
- Elasticsearch之CURL命令的HEAD
如果只想检查一些文档是否存在,我们可以使用HEAD来替代GET方法,这样就只会返回HTTP头文件. [hadoop@master elasticsearch-]$ curl -i XHEAD http ...
随机推荐
- Andrew and Chemistry(树的同构)
Andrew and Chemistry(树的同构) 题链 将一棵树转化为最小表示法,将此时的树哈希一下,同时用map进行标记,就可以判断树是否存在同构 #include <map> #i ...
- Unity高像素截图
本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/51386272 作者:car ...
- JavaScript 面向对象的编程(二) 类的封装
类的定义 方式一 var Book = function(id, name, price){ //私有属性,外部不能直接访问 var num = 1; //私有方法, function checkId ...
- 实验吧-catalyst-system
刚学逆向很多都不懂,本题也是在看了 http://countersite.org/articles/reverse_engineering/136-revers-s-alexctf-2017.html ...
- [K/3Cloud] 如何在k3Cloud主页实现自定义页面的开发
过自定义页签动态添加一些内容,比如网页链接.图片等. 如果是动态的增加链接,可以参考一下代码,然后在ButtonClick事件里面对链接进行处理. public override void After ...
- Win32编程API 基础篇 -- 6.菜单和图标
菜单和按钮 例子:菜单1 本小节仅仅向你展示如果向你的窗口中加入一个基本的菜单,通常你会用到一个提前制作好的菜单资源,这会是一份.rc文件并且会被编译链接进你的.exe可执行程序中.这是具体的流程做法 ...
- 1154 能量项链 2006年NOIP全国联赛提高组 codevs
1154 能量项链 2006年NOIP全国联赛提高组 codevs 题目描述 Description 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头 ...
- Username is not in the sudoers file. This incident will be reported
type sudo adduser <username> sudo where username is the name of the user you want to add in th ...
- 从一个input点击引起的思考
一个input或者select标签都是有属于自己的disabled属性的,这个属性很少被使用,但是我们在项目实际开发的过程中也会遇到,比如我选择之后就让他置灰不可以变动了,那么久可利用js动态设置.对 ...
- NIO框架之MINA源代码解析(二):mina核心引擎
NIO框架之MINA源代码解析(一):背景 MINA的底层还是利用了jdk提供了nio功能,mina仅仅是对nio进行封装.包含MINA用的线程池都是jdk直接提供的. MINA的server端主要有 ...