对于,Elasticsearch之CURL命令的UPDATE包括局部更新和全部更新。可以去看我写的另一篇博客。
Elasticsearch之更新(全部更新和局部更新)
总结:
ES全部更新,使用PUT或者POST
ES局部更新,使用POST
ES可以使用PUT或者POST对文档进行更新(包括局部更新和全部更新),如果指定ID的文档已经存在,则可执行更新操作。
执行更新操作的时候注意细节
1) ES首先将旧的文档标记为删除状态
2) 然后添加新的文档
3)旧的文档不会立即消失,但是你也无法访问
4)ES会在你继续添加更多数据的时候在后台清理已经标记为删除状态的文档。
我这里,仅仅,演示一个,局部更新。
局部更新,即可以添加新字段或者更新已有字段(必须使用POST)
即,下面,字段nmae不更新,只更新age,所以,这才叫做局部更新。
[hadoop@master elasticsearch-2.4.0]$ curl -XPOST http://master:9200/zhouls/user/1/_update -d '{"doc" : {"name":"john" ,"age":"30"}}' {"_index":"zhouls","_type":"user","_id":"1","_version":2,"_shards":{"total":2,"successful":2,"failed":0}}[hadoop@master elasticsearch-2.4.0]$ [hadoop@master elasticsearch-2.4.0]$ [hadoop@master elasticsearch-2.4.0]$