(36)ElasticSearch文档修改,删除原理解析

  修改文档内容有两种方式

  1、全部替换:相当于添加一个新文档,把原有文档全部覆盖掉,比如要修改一个age,其余字段也要全部指定。 其实是把原文档标记为deleted,又创建了一个新文档,随着数据的增加,es会在合适的时间把标记为deleted的文档删除掉。

PUT /lib/user/1
{
"first_name":"Jane",
"last_name":"Lucy",
"age":27,
"about":"I like to collect rock albums",
"interests":["music"]
}

  2、部分替换:使用_update 只需要指明要修改的字段即可,es查询出document然后使用用户提交过来的数据更新到document中,已有的document被标记为deleted

然后再创建一个新的document。

POST /lib/user/4/_update
{
"doc":{
"age":28
}
}

  删除文档,也是先标记为deleted,es在合适的时间再删除掉。

DELETE /lib/user/4

  两种方式的区别:

  post方式比put方式网络传输的次数要少,从而提高了性能,post方式从查询文档到修改文档,再到创建新的文档都是在es内部实现的,post方式发生并发冲突的可能性降低了。

猜你喜欢

转载自www.cnblogs.com/javasl/p/12643392.html