ES 中的 POST 和 PUT 的区别

0、什么是Restful架构

比较难说清楚,这部分大雾状态,引ruanyf 理解RESTful架构 的几句总结吧:html

Fielding将他对互联网软件的架构原则,定名为REST,即Representational State Transfer的缩写。我对这个词组的翻译是"表现层状态转化"。git

RESTful API 设计指南 中也提到了一些命名规范、HTTP动词、状态码之类的基础概念,在本文中不是重点,再也不赘述。github

一、幂等操做

幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。
在编程中.一个幂等操做的特色是其任意屡次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指能够使用相同参数重复执行,并能得到相同结果的函数。这些函数不会影响系统状态,也不用担忧重复执行会对系统形成改变。

二、POST和PUT的区别

HTTP的其余几个动词GET、DELETE等就不详谈了,这里主要说下POST和PUT。web

在操做时的区别以下:编程

POST /uri 建立
DELETE /uri/xxx 删除 PUT /uri/xxx 更新或建立 GET /uri/xxx 查看

POST不用加具体的id,它是做用在一个集合资源之上的(/uri),而PUT操做是做用在一个具体资源之上的(/uri/xxx)。api

在ES中,若是不肯定document的ID(documents具体含义见下),那么直接POST对应uri( “POST /website/blog” ),ES能够本身生成不会发生碰撞的UUID;服务器

若是肯定document的ID,好比 “PUT /website/blog/123”,那么执行建立或修改(修改时_version版本号提升1) restful

ES与DB的层级关系类比

ES:indices --> types --> documents --> fields
DB:databases --> tables --> rows --> columns

 

在幂等性的区别以下:架构

PUT、GET、DELETE是幂等的,因为同一条这样的指令,执行屡次结果都同样。好比 PUT /uri/xxx 屡次,那么结果和这条指令执行一次效果同样。ide

而POST是非幂等的,执行屡次更改屡次服务器状态。好比POST /uri 屡次,那么生成多个UUID的document,执行屡次效果固然和执行一次不同了~

 

参考:

Rest模式——get,put,post,delete含义与区别

Elastic Search基本知识

相关文章
相关标签/搜索