第一章第六节:Elasticsearch之更新\删除文档
1、带_update
1:要更新的数据必须存在
2:会对比原数据,如果没有任何更新,就什么都不做,只是响应的result的值会是noop
3:数据必须放在doc中
4:可以单独更新某一个字段
POST /customer/external/1/_update
{
"doc":{
"name":"meng"
}
}
响应数据:
{
"_index" : "customer",
"_type" : "external",
"_id" : "1",
"_version" : 8,
"result" : "noop",
"_shards" : {
"total" : 0,
"successful" : 0,
"failed" : 0
},
"_seq_no" : 9,
"_primary_term" : 1
}
2、不带_update
1:要更新的数据不存在则是创建,存在则更新
2:不会对比原数据,而且_version和_seq_no的值都会有变化
3:所有字段都要更新,否则,当前文档未更新的字段会丢失
POST /customer/external/1
{
"name":"meng"
}
或者
PUT /customer/external/1
{
"name":"meng"
}
响应数据:
{
"_index" : "customer",
"_type" : "external",
"_id" : "1",
"_version" : 11,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 12,
"_primary_term" : 1
}
3、更新元数据(增加列)
使用带_update和不带_update的更新方式都可以
PUT /customer/external/1
{
"name":"meng",
"age":12
}
或者
PUT /customer/external/1/_update
{
"doc":{
"name":"meng",
"age":12
}
}
查询响应:
{
"_index" : "customer",
"_type" : "external",
"_id" : "1",
"_version" : 18,
"_seq_no" : 19,
"_primary_term" : 1,
"found" : true,
"_source" : {
"name" : "meng",
"age" : 12
}
}
4、删除指定文档
DELETE /customer/external/1
响应数据:
{
"_index" : "customer",
"_type" : "external",
"_id" : "1",
"_version" : 19,
"result" : "deleted",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 20,
"_primary_term" : 1
}