美文网首页
ES文档的基本操作

ES文档的基本操作

作者: 鸿雁长飞光不度 | 来源:发表于2020-02-01 01:11 被阅读0次

    1.CRUD基本操作

    1.1 CREATE(创建)

    • 支持自动生成文档ID和指定文档ID两种方式。
      • post /index_name/_doc,自动生成document id
      • PUT index_name/_create/1,创建时显示指定_create,如果id存在,则操作失败。

    1.2 GET(获取)

    格式:GET index_name/_doc/id

    例如: GET movies/_doc/1
    
    {
      "_index" : "movies",
      "_type" : "_doc",
      "_id" : "1",
      "_version" : 2,
      "_seq_no" : 9783,
      "_primary_term" : 5,
      "found" : true,
      "_source" : {
        "genre" : [
          "Adventure",
          "Animation",
          "Children",
          "Comedy",
          "Fantasy"
        ],
        "year" : 1995,
        "title" : "Toy Story",
        "id" : "1",
        "@version" : "1"
      }
    }
    
    • 找到文档返回200
      • 文档元信息(返回的最外面一层)
        • _index/_type (文档所属的索引和类型)
        • _version表示版本信息,文档修改的次数。
        • _source表示最原始的信息
    • 找不到文档返回404

    1.3 INDEX

    格式:PUT index_name/_doc/1

    和CREATE的区别在于,如果文档不存在,就会索引新的文档。否则现有的文档会被删除,新的文档被索引,版本信息加1。

    1.4 UPDATE(更新)

    格式:

    POST index_name/_update/1
    {
          "doc":{
                "albums":["Album","Alumbs"] 
          }
    }
    
    • UPDATE 方法不会删除原来文档,实现数据更新。
    • POST方法的 Payload需要包含在doc里面。

    1.4 DELETE(删除)

    格式 DELETE index_name/_doc/1


    创建

    POST users/_doc
    {
      "account":"zhangsan@qq.com",
      "user_name":"张三"
    }
    
    {
      "_index" : "users",
      "_type" : "_doc",
      "_id" : "38m-928BexMGWhwZ99Xt",
      "_version" : 1,
      "result" : "created",
      "_shards" : {
        "total" : 2,
        "successful" : 1,
        "failed" : 0
      },
      "_seq_no" : 0,
      "_primary_term" : 1
    }
    

    index

    PUT users/_doc/38m-928BexMGWhwZ99Xt
    {
      "account":"lisi@qq.com",
      "user_name":"张三"
    }
    {
      "_index" : "users",
      "_type" : "_doc",
      "_id" : "38m-928BexMGWhwZ99Xt",
      "_version" : 2,
      "result" : "updated",
      "_shards" : {
        "total" : 2,
        "successful" : 1,
        "failed" : 0
      },
      "_seq_no" : 2,
      "_primary_term" : 1
    }
    //版本号增加了1
    

    UPDATE

    POST users/_update/38m-928BexMGWhwZ99Xt
    {
          "doc":{
                "address":"地址信息" 
          }
    }
    
    {
      "_index" : "users",
      "_type" : "_doc",
      "_id" : "38m-928BexMGWhwZ99Xt",
      "_version" : 3,
      "_seq_no" : 3,
      "_primary_term" : 1,
      "found" : true,
      "_source" : {
        "account" : "lisi@qq.com",
        "user_name" : "张三",
        "address" : "地址信息"
      }
    }
    

    2.批量操作

    2.1 Bulk API

    格式: POST _bulk

    用于在一次API请求里面完成多次操作,减少http请求次数,属于批量操作。

    • 支持 index,create,update,delete类型。
    • 可以在url指定index,也可以在请求的payload中进行。
    • 操作的单条失败,不会影响其他的操作
    • 返回结果包含每一条执行的结果。
    #### 2.1 POST _bulk
    {"index":{"_index":"users","_id":1}}
    {"account":"wangwu@qq.com","user_name":"王五"}
    {"delete":{"_index":"users","_id":"1"}}
    {"create":{"_index":"users","_id":4}}
    {"account":"sunliu@qq.com","user_name":"孙六"}
    {"update":{"_index":"users","_id":"3"}}
    {"doc":{"account":"wangwu@qq.com","user_name":"王七"}}
    

    2.2 批量读取_mget

    格式:

    GET /_mget
    {
        "docs": [
            {
               "_index":"users",
               "_id":1
            },
            {
               "_index":"users",
               "_id":2
            }
           ]
    }
    
    {
      "docs" : [
        {
          "_index" : "users",
          "_type" : "_doc",
          "_id" : "1",
          "found" : false
        },
        {
          "_index" : "users",
          "_type" : "_doc",
          "_id" : "3",
          "_version" : 2,
          "_seq_no" : 13,
          "_primary_term" : 1,
          "found" : true,
          "_source" : {
            "account" : "wangwu@qq.com",
            "user_name" : "王七"
          }
        }
      ]
    }
    

    2.3 批量查询

    格式 POST index_name/_msearch

    案例

    
    POST kibana_sample_data_logs/_msearch
    {}
    {"query":{"match_all":{}},"size":1}
    {"index":"kibana_sample_data_logs"}
    {"query":{"match_all":{}},"size":2}
    
    

    用法暂时不理解以后补充,以后补

    3常见错误

    问题 原因
    无法连接 网络故障或者集群挂了
    连接无法关闭 网络故障或者节点出错
    429 集群过于繁忙
    4xx 请求格式有错
    500 集群内部错误

    相关文章

      网友评论

          本文标题:ES文档的基本操作

          本文链接:https://www.haomeiwen.com/subject/mgnwthtx.html