zoukankan      html  css  js  c++  java
  • 【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

  • 相关阅读:
    zuul入门(5)zuul 处理异常
    SpringCloud的服务注册中心(三)
    SpringCloud的服务注册中心(四)- 高可用服务注册中心的搭建
    新概念英语(一)生词本1
    SpringBoot应用的监控与管理
    SpringBoot应用的属性管理
    SpringBoot应用的集成测试
    SpringBoot的RestController vs @ResponseBody + @Controller
    SpringBoot应用的启动方式
    SpringBoot应用的前台目录
  • 原文地址:https://www.cnblogs.com/musecho/p/15179972.html
Copyright © 2011-2022 走看看