Elastic:什么时候用POST?什么时候用PUT?有什么区别?

简介: 首先POST与PUT都可以用于更新和新增操作,但是新增时POST是不用指定ID的,会自动分配;而PUT是需要指定ID的,也就是说PUT是幂等性的,无论你操作多少次结果都是一样的。而POST是操作一遍就新增一条

POST与PUT的区别

首先POST与PUT都可以用于更新和新增操作,但是新增时POST是不用指定ID的,会自动分配;而PUT是需要指定ID的,也就是说PUT是幂等性的,无论你操作多少次结果都是一样的。而POST是操作一遍就新增一条

当他们都用于更新时,POST只会更新相同字段的值,而PUT会将整个数据进行替换,下面我们详细举例来体会

新增案例

POST用于新增,比如

POST new_index/_doc
{"name": "555"}

POST new_index/_bulk

{"index":{}}
{"name":"5555"}

PUT用于新增,比如

PUT new_index/_doc/1
{"name":"55","title":"5"}

PUT new_index/_bulk

PUT new_index/_bulk
{"index":{"_id":2}}
{"name":"555555","title":"55"}

修改案例

使用PUT进行更新会将doc全量替换,使用方法和新增一样

PUT new_index/_doc/1
{"name":"66","id":"5"}

当识别到为修改时,返回结果中的操作类型也会为updated

{
  "_index" : "new_index",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 11,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 2,
    "failed" : 0
  },
  "_seq_no" : 14,
  "_primary_term" : 1
}

需要注意的是,以下形式的POST调用也是全量替换的:

POST new_index/_doc/1
{"name":"66","title":"66"}

但是通过_update调用的更新则是非全量替换的

POST new_index/_update/1
{
  "doc": {
    "name": "555",
    "id": 3
  }
}

返回结果,可以看到没有的title字段无影响,只修改了存在的name字段,并且新增了之前不存在的title字段

"hits" : [
      {
        "_index" : "new_index",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "name" : "555",
          "title" : "66",
          "id" : 3
        }
      }
    ]

_update API是无法通过PUT方式调用的

POST也可用于查询

这里拓展一点,除了我们普遍认为的GET方式查询,POST也可以查询哦
POST new_index/_search

目录
相关文章
|
8天前
|
网络协议 数据安全/隐私保护
get和post的区别
get和post的区别
20 0
|
6月前
极简了解GET、POST、DELETE、PUT区别
极简了解GET、POST、DELETE、PUT区别
80 0
什么时候使用PUT?什么时候使用POST?具体使用场景是什么?
什么时候使用PUT?什么时候使用POST?具体使用场景是什么?
764 0
|
5天前
|
缓存 安全 数据安全/隐私保护
get 跟 post 有什么区别?
get 跟 post 有什么区别?
15 0
|
8天前
|
Web App开发 缓存 网络协议
get和post的区别!
get和post的区别!
|
9月前
|
缓存
get和post的区别
`GET` 和 `POST` 是 HTTP 请求方法,常用于客户端(如浏览器)与服务器之间的通信。
|
8天前
|
缓存 安全 数据安全/隐私保护
GET和POST有什么区别
GET和POST有什么区别
|
10月前
|
缓存 安全 数据安全/隐私保护
基本的 HTTP 方法GET、POST、PUT 和 DELETE
HTTP 中有四种基本方法:GET、POST、PUT 和 DELETE。大部分时间我们都使用 GET。它用于任何安全的事情,不会引起任何副作用。GET 能够被添加书签、缓存、链接到代理服务器并通过代理服务器传递。这是一个非常强大的操作,一个非常有用的操作。
214 0
|
11月前
|
网络协议 安全 数据安全/隐私保护
GET与POST的区别
GET与POST的区别
101 0
|
缓存 安全 网络协议
PUT和POST的区别
PUT 和 POST 是 HTTP 协议中两种常用的请求方法。它们有些相似之处,但也有一些重要的区别。在本文中,我们将详细介绍 PUT 和 POST 的区别。

热门文章

最新文章