跳到主要内容

07、ElasticSearch 实战:入门-put&post修改数据

接第6节

4、更新文档

更新操作 参数或结论
POST
customer/external/1/_update
{
“doc”: {
“name”: “Jane Doe”,
“age”: 20
}
}
或者POST
customer/external/1
{
“name”: “John Nash2”
}
或者PUT
customer/external/1
{
“name”: “John Nash3”
}
不同 POST 操作会对比源文档数据,如果相同不会有什么操作,文档 version 、_seq_no 不增加;
PUT 操作总会将数据重新保存并增加 version 版本;
带 _update 对比元数据如果一样就不进行任何操作。
看场景 对于大并发更新,不带update;
对于大并发查询偶尔更新,带update;对比更新,重新计算分配规则。
更新同时增加属性
POST
customer/external/1/_update
{
“doc”: {
“name”: “Jane Doe”,
“age”: 20
}
}
更新同时增加属性
PUT&POST
customer/external/1
{
“name”: “John Nash2”,
“age”: 40
}

使用带_update 的 post 请求更新数据,在 postman 中使用 post 方法发送 http://192.168.56.10:9200/customer/external/1/_update 请求,参数传:

{
   
     
     "doc": {
   
     
          "name": "John Nash"
     }
}

发送请求可以得到下面的结果,可以看到更新成功:
 
再次发送请求,可以看到如果数据相同,对比原来数据,与原来一样就什么都不做,_version_seq_no也不会变:
 

使用_update 的 post 请求更新数据,在 postman 中使用 post 方法发送 http://192.168.56.10:9200/customer/external/1 请求,
参数同上,可以看到,每点击一次就会更新一次数据,不会做数据的校验:
 

注意,对于不带 _update 的更新,传参时可以使用

{
    
      
     "doc": {
    
      
          "name": "John Nash",
          "age":40
     }
}

也可以使用:

{
    
      
     "name": "John Nash2",
     "age": 40
}