【ElasticSearch(三)】_cat查看信息 、put&post新增数据、GET 查询数据、乐观锁

【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

    image-20210818160017509

  • 假如用户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

posted @ 2021-08-24 13:47  musecho  阅读(524)  评论(0编辑  收藏  举报