Elasticsearch之CURL命令的PUT和POST对比

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介:

PUT是幂等方法,而POST并不是。

  PUT用于更新操作,POST用于新增操作比较合适。

  PUT,DELETE操作是幂等的,所谓幂等就是指不管进行多少次操作,结果都一样。

        比如,我用PUT修改一篇文章,然后在做同样的操作,每次操作后的结果并没有不同,DELETE也是一样。

 

 

  POST操作不是幂等,比如常见的POST重复加载问题:当我们多次发出同样的POST请求后,其结果是创建出了若干的资源。

  还有一点需要注意的是,创建操作可以使用POST,也可以使用PUT。区别在于POST是作用在一个集合资源之上的(/articles),而PUT操作是作用在一个具体资源之上的(/articles/123),比如说很多资源使用数据库自增主键作为标识信息,而创建的资源的标识信息到底是什么只能由服务端提供,这个时候就必须使用POST。

 

 

 

 

 

复制代码
[hadoop@master elasticsearch-2.4.0]$ curl -XPOST http://master:9200/zhouls/user/1 -d '{"name" : "john"  , "age" : 28}'
{"_index":"zhouls","_type":"user","_id":"1","_version":1,"_shards":{"total":2,"successful":2,"failed":0},"created":true}[hadoop@master elasticsearch-2.4.0]$ 
[hadoop@master elasticsearch-2.4.0]$ 

zhouls是索引,user是类型,1是id
[hadoop@master elasticsearch
-2.4.0]$ curl -XPOST http://master:9200/zhouls/user -d '{"name" : "john"}' {"_index":"zhouls","_type":"user","_id":"AVz5Q9u7U8bDb6QDgbDS","_version":1,"_shards":{"total":2,"successful":2,"failed":0},"created":true}[hadoop@master elasticsearch-2.4.0]$ [hadoop@master elasticsearch-2.4.0]$
  zhouls是索引,user是类型
  由此,可见,如果,我们不指定id,则会自动随机生成


POST方式是自增id,PUT是必须要跟上id。

[hadoop@master elasticsearch
-2.4.0]$ curl -XPUT http://master:9200/zhouls/user/2?op_type=create -d '{"name" : "john" , "age" : 28}' {"_index":"zhouls","_type":"user","_id":"2","_version":1,"_shards":{"total":2,"successful":2,"failed":0},"created":true}[hadoop@master elasticsearch-2.4.0]$ [hadoop@master elasticsearch-2.4.0]$
  zhouls是索引,user是类型,2是id,
  ?op_type=create是


[hadoop@master elasticsearch-2.4.0]$ 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":"2"}],"type":"document_already_exists_exception","reason":"[user][2]: document already exists","index":"zhouls","shard":"2"},"status":409}[hadoop@master elasticsearch-2.4.0]$ 
[hadoop@master elasticsearch-2.4.0]$ 
 zhouls是索引,user是类型,2是id,
  _create是


由此,可见,PUT是不允许,已经创建过的id,再来创建。


[hadoop@master elasticsearch
-2.4.0]$ [hadoop@master elasticsearch-2.4.0]$ curl -XPUT http://master:9200/zhouls/user/3/_create -d '{"name" : "john" , "age" : 28}' {"_index":"zhouls","_type":"user","_id":"3","_version":1,"_shards":{"total":2,"successful":2,"failed":0},"created":true}[hadoop@master elasticsearch-2.4.0]$ [hadoop@master elasticsearch-2.4.0]$ [hadoop@master elasticsearch-2.4.0]$
复制代码

 

 

 

 



本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/7100953.html,如需转载请自行联系原作者

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
ElasticSearch Task命令说明
ElasticSearch task相关命令,以及返回信息解读。
5052 0
ElasticSearch Task命令说明
|
7月前
|
监控 搜索推荐 数据挖掘
一文快速了解Elastic Search 开源搜索引擎(技术选型+启动命令)
一文快速了解Elastic Search 开源搜索引擎(技术选型+启动命令)
119 0
Elasticsearch系列——使用bulk批量执行命令
Elasticsearch系列——使用bulk批量执行命令
|
Java 索引
Elasticsearch系列——使用kibana或postman操作Elasticsearch的常用命令(一)
Elasticsearch系列——使用kibana或postman操作Elasticsearch的常用命令(一)
Elasticsearch 集群相关命令
Elasticsearch 集群相关命令
|
存储 索引
【Elasticsearch 技术分享】—— Elasticsearch 存储一条数据, put 过程是什么样子的?
在前面已经介绍了 ES 中常用的一些名词,知道了数据是存储在 shard 中的,而 index 会映射一个或者多个 shard 。那这时候我要存储一条数据到某个索引下,这条数据是在哪个 index 下的呢?
733 0
|
JSON 关系型数据库 Go
Elasticsearch 学习笔记——2.es 的简单命令操作
首先,我们需要一些数据来支持我们的操作,这里我采用的是使用 filebeat 来采集数据到 es ,filebeat 也是 elastic 系列的产品,专门用来收集日志文件,使用十分的简单,在官网(下载地址)下载安装包解压,然后修改一下配置文件 filebeat.yml,
164 0
Elasticsearch 学习笔记——2.es 的简单命令操作
|
存储 自然语言处理 Kubernetes
反手几行命令就安装好了Elasticsearch集群
反手几行命令就安装好了Elasticsearch集群
216 0
反手几行命令就安装好了Elasticsearch集群
|
存储 缓存 JSON
干货 | Elasticsearch 开发实战常用命令清单
0、背景 Elasticsearch 具有一组丰富的易于理解的 REST API,这些 API 均可如下几种方式通过 HTTP 调用进行访问。 Curl Postman head 插件 cerebro 工具 kibana 开发实战环节,我推荐使用:kibana Dev-tools。
256 0
干货 | Elasticsearch 开发实战常用命令清单
|
存储 缓存 运维
干货 | Elasticsearch 运维实战常用命令清单
球友反馈的实战问题: 关于es的运维相关的, 遇到一些问题! 第一个问题:是关于集群迁移的,目前需要 针对20亿的数据做迁移,如果文件迁移,需要停机时间太久,除了重新灌入,不知 道有没有更好的方式? 第二个问题:我们es集群的读写都很频繁,如何把控在相互不影响性能,当前情况是会有相互影响! 第三个问题:之前做版本升级,升级后部分分片不可用,但是不知道什么原因导致?
320 0
干货 | Elasticsearch 运维实战常用命令清单