第一章第六节: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
}
posted @ 2021-06-30 10:38  努力的校长  阅读(155)  评论(0编辑  收藏  举报