【ElasticSearch(三)】_cat查看信息 、put&post新增数据、GET 查询数据、乐观锁
一、_cat 查看信息
-
GET _cat/nodes: 查看所有节点
用postman访问
http://localhost:9200/_cat/nodes
-
GET _cat/health: 查看es健康状况
green:健康
后面的数字:集群分片信息
-
GET _cat/master: 查看主节点信息
LAPTOP-QD6DSPQ9:之前安装ES成功后 发送请求中的name
zH1JxKNcQfK2oF9bV3wh7Q:主节点的唯一编号
127.0.0.1 127.0.0.1:虚拟机地址
-
GET _cat/indices: 查看所有索引,详单与mysql里的命令show databases;
二、put&post新增数据
索引一个文档(保存):保存一个数据,要指明保存在哪个索引的哪个类型下,指定用哪个唯一标识。
1.PUT customer/external/1
-
要求:
在 customer索引下的 external类型下保存1号数据为请求路径是PUT customer/external/1,数据内容为
{ "name": "xiaoming" }
-
操作:
-
我们用postman,请求路径
http://localhost:9200/customer/external/1
Body填写json格式的内容
-
响应保存成功
解释参数:
_index:数据在哪个索引下
_type:数据在哪个类型下
_id:数据的id是什么
_version:数据的版本
_result:数据的结果。因为我们刚刚创建了这条数据,所以是created。
_shards:分片,集群中的概念
-
2.多次发送一个请求,是更新操作
如果再次发送请求,会响应
发现version变为2,result变为updated
3.其实这个请求还支持使用POST方式发送,结果是一致的
4.POST方式 可以不带ID发送(不带最后的 /1),ES会自动生成一个ID,如果再次请求也会再次新增一个ID
5.PUT方式 如果不带ID将会出现405错误:请求方式不允许
三、GET 查询数据
GET customer/external/1
_index:表示在哪个索引下
_type:类型
_id:添加时的id
_version:版本号
_seq_no:并发控制字段,序列号,每次更新+1 (乐观锁操作使用)
_primary_term:分片,作用同上,重启会变化
_source:真正的内容
四、乐观锁演示
在请求后添加参数 ?if_seq_no=xxx&if_primary_term=xxx
就能保证 同一时间发送的多个请求只有一个是有效的。类似于Mysql里的乐观锁。
(xxx是根据实际情况的数字填写的)
如果效验条件通过,将会进行修改
如果效验失败,将会显示错误信息(409错误)
演示:
-
先查询一下当前情况、
GET customer/external/1
当前的
_seq_no=1
,_primary_term=1
-
加入用户1发送请求
PUT customer/external/1?if_seq_no=1&if_primary_term=1
要修改的内容
{ "name": 1 }
修改成功,并且
_seq_no
已经发生改变。
此时再查询 GET customer/external/1
-
假如用户2不知道用户1进行了修改,仍然请求 PUT customer/external/1?if_seq_no=1&if_primary_term=1
要修改的内容
{ "name": 2 }
修改失败。
他应该请求 PUT customer/external/1?if_seq_no=5&if_primary_term=1