ES文档的基本操作

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":"[email protected]",
  "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":"[email protected]",
  "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" : "[email protected]",
    "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":"[email protected]","user_name":"王五"}
{"delete":{"_index":"users","_id":"1"}}
{"create":{"_index":"users","_id":4}}
{"account":"[email protected]","user_name":"孙六"}
{"update":{"_index":"users","_id":"3"}}
{"doc":{"account":"[email protected]","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" : "[email protected]",
        "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文档的基本操作)