本文看下工作中用的最多的CRUD。让我们一起来做一个帅帅的CRUD BOY吧!!!
格式1(指定ID):PUT 索引名称/_create/文档ID {文档json}
格式2(不指定ID):POST 索引名称/_create {文档json}
效果:文档id存在则报错
格式:GET/_doc/文档ID
效果:存在则返回结果,否则返回not_found
格式:PUT 索引名称/_doc_/文档ID {文档json}
效果:文档ID存在则删除老的再添加,否则直接添加,需要注意存在时虽然删除了,但是新增文档版本号还是会增加
格式:POST 索引名称/_update/文档ID {"doc": 文档json} --注意外边包一层doc
效果:文档不存在报document missing,存在时,做增量更新,即以下几种情况
1:如果要更新的字段在目标文档中存在,则使用指定的更新
2:如果要更新的字段在目标文档中不存在,则直接添加
3:如果目标文档中存在的字段,没有在更新的文档中指定,则该字段不变
格式:DELETE 索引名称/_doc/文档ID
分别来看下。
现有数据为:
{
"_index" : "users",
"_type" : "_doc",
"_id" : "101",
"_version" : 4,
"_seq_no" : 34,
"_primary_term" : 1,
"found" : true,
"_source" : {
"firstName1" : "jack101",
"lastName" : "Johnson2",
"tag" : [
"guitar",
"skateboard"
],
"go" : "wowowoow"
}
}
用于增删改操作,格式:
POST _bulk
{[index|create|update|delete]:{"_index": 索引名称, "_id": 文档ID}}
[index|create|update]时文档
同时执行,会返回每个的执行结果,其中一个失败,不会影响其他的操作执行。
POST _bulk
{"index": {"_index": "users", "_id": "10000"}}
{"real_name": "lucy"}
{"update": {"_index": "users", "_id": "10001"}}
{"doc": {"name": "lucy"}}
{"create": {"_index": "users", "_id": "10002"}}
{"name": "james"}
{"delete": {"_index": "users", "_id": "10001"}}
返回结果:
{
"took" : 98,
"errors" : false,
"items" : [
{
"index" : {
...
"result" : "updated",
...
}
},
{
"update" : {
...
"result" : "updated",
...
}
},
{
"create" : {
...
"result" : "created",
...
}
},
{
"delete" : {
...
"result" : "deleted",
...
}
}
]
}