开发者学堂课程【ElasticSearch 入门精讲:PUT 和 POST-更新Ⅰ之全局更新】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/631/detail/9954
PUT 和 POST-更新Ⅰ之全局更新
内容介绍:
一、讲义
二、演示
三、说明
一、讲义
PUT 是幂等方法,POST 不是。所以 PUT 用于更新,POST 用于新增比较合适。
所谓幂等是指不管进行多少次操作,结果都一样。
需要注意的一点就是,创建操作可以使用 POST,也可以使用 PUT,区别就在于POST 是作用在一个集合资源(/articles)之上的,而 PUT 操作是作用在一个具体资源之上的(/articles/123),比如说很多资源使用数据库自增主键作为标识信息,这个时候就需要使用 PUT 了。
而创建的资源的标识信息到底是什么,只能由服务端提供时,这个时候就必须使用 POST。
二、演示
全局更新:(一般不使用,效果是:将旧的索引信息替换为新的索引信息)
使用 post 和 put 都行
1、使用 post,将索引标识为1索引信息更新为:"name":"HADOOP","author":"郭富城”
curl-H'Content-Type:application/json'-XPOST'http://JANSON01:9200/bigdata/product/1?pretty’-d" {"name":"HADOOP","author":"郭富城”}’
演示:
打开索引库
先输入 su -l jerry 启动
再输入 jps 查看一下
再输入
curl-XGET'Http://JANSON01:9200/bigdata/product/_search?pretty’
如图罗列出信息
将 ID 为1的 author 更新为郭富城:
先指定一个类型-H 'application/json'放在curl后面为:
curl-H'application/json'-XPOST'http://JANSON01:9200/bigdata/product/1?pretty’ -d" ‘{"name":"hadoop","author":"郭富城”}’
这时发现报错,需要增加一个 content type 的参数类型
curl-H'Content-Type:application/json'-XPOST'http://JANSON01:9200/bigdata/product/1?pretty’ -
d" ‘{"name":"hadoop","author":"郭富城”}’
确定更新后查看结果。
2、使用put,将索引标识为1索引信息更新为:"name":"hadoop","author":"道哥.卡廷"}’
只用将上面的信息其中的-XPOST改为-XPUT, "author":"郭富城”改为"author":"道哥.卡廷"
即:
curl-H'Content-Type:application/json'-XPUT'http://JANSON01:9200/bigdata/product/1?pretty’ -d" {"author":"道哥.卡廷”}’
三、说明
1.但是这些操作都是全局更新,可以理解为先将旧的 document 删除,然后重新创建一个新的、id 相同的 document。
2.PUT 是幂等方法,POST 不是,所以 PUT 用于更新,POST 用于新增比较合适。(幂等操作:无论进行多少次操作,最终的结果是一致的。如 StringBuffer)
3、ES 创建索引库和索引时的注意点:
1)索引库名称必须要全部小写,不能以下划线开头,也不能包含逗号
2)如果没有明确指定索引数据的 ID,那么 es 会自动生成一个随机的 ID,需要使用 POST 参数
curl -H‘Content-Type:application/json’-XPOST
http://JANSON01:
9200/bigdata/product/
-d '{“name”: “HADOOP”,"author": "Doug Cutting", “version”:3.3.3}’