文档的CRUD与批量操作

CRUD方法

Create

  • 支持自动生成文档id和指定文档id两种方法
    • 通过调用“post /indexName/_doc”,系统会自动生成document id
    • 使用HTTP PUT indexName/_create/id创建时,URI中显示指定_create,此时如果该id的文档已经存在,操作失败
      如果id已经存在,会失败
  • es通过版本号判断冲突

Index

  • PUT indexName/_doc/id
  • 如果id不存在,会创建新的文档。否则,会先删除现有的文档,再创建新的文档,版本会增加

Update

  • 不会删除原来的文档,而是实现真正的数据更新
  • post方法 / payload需要包含在“doc”中,POST indexName/_update/id
    文档必须已经存在,更新只会对相应字段做增量修改

Read

  • GET indexName/_doc/id
  • 找到文档,返回HTTP 200
    • 文档元信息
      • _index / _type /
      • _version,改动次数,版本信息,同一个id的文档,即使被删除,version号也会不断增加
      • _source中默认包含了文档的所有原始信息
  • 找不到文档,返回HTTP 404

Delete

Bulk API

  • 支持在一次API调用中,对不同的索引进行操作
  • 支持四中类型操作
    • index、create、update、delete
  • 可以在URI中指定index,也可以在请求的payload中进行
  • 操作中单条操作失败,并不会影响其他操作
  • 返回结果包含了每一条操作执行的结果
### Bulk 操作
# 执行两次,查看每次的结果

#执行第1次
POST _bulk
{ "index" : { "_index" : "test", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_id" : "2" } }
{ "create" : { "_index" : "test2", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_index" : "test"} }
{ "doc" : {"field2" : "value2"} }


#执行第2次
POST _bulk
{ "index" : { "_index" : "test", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_id" : "2" } }
{ "create" : { "_index" : "test2", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_index" : "test"} }
{ "doc" : {"field2" : "value2"} }

批量读取 - mget

GET /_mget
{
    "docs" : [
        {
            "_index" : "test",
            "_id" : "1"
        },
        {
            "_index" : "test",
            "_id" : "2"
        }
    ]
}

批量查询 - msearch

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

常见错误返回

无法连接:网络故障或集群挂了
连接无法关闭:网络故障或节点出错
429:集群过于繁忙
4xx:请求体格式有错
5xx:集群内部错误
批量操作能够提高api调用的性能,但是不要一次发送过多的数据:
比较笼统的说,一般建议是1000-5000个文档,如果你的文档很大,可以适当减少队列,大小建议是5-15MB,默认不能超过100M。会报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值