(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方式发生并发冲突的可能性降低了。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM