Elasticsearch之更新(所有更新和局部更新)

 

  前面的基础,html

Elasticsearch之curl建立索引库

Elasticsearch之curl建立索引

Elasticsearch之curl建立索引库和索引时注意事项

Elasticsearch之cur查询索引

 

 

 

 

 

  首先,明确一个概念,es包括所有更新和局部更新curl

 

 

ES所有更新elasticsearch

  ES能够使用PUT或者POST对文档进行更新(所有更新),若是指定ID的文档已经存在,则执行更新操做。oop

好比,我这里,id=1文档存在,那么,就是es所有更新。post

注意:url

  es执行更新操做的时候,ES首先将旧的文档标记为删除状态,而后添加新的文档,旧的文档不会当即消失,可是你也没法访问,spa

ES会在你继续添加更多数据的时候在后台清理已经标记为删除状态的文档。htm

 

 

 

 

 

 

 

 

 

ES局部更新blog

  es为何须要局部更新?索引

这个,从字面意思就知道,固然,不想所有更新时,好比一个指定类型下,不少个id,我不想每一个id都涉及等。

 

 

  局部更新,能够添加新字段或者更新已有字段(必须使用POST

[hadoop@djt002 elasticsearch-2.4.3]$ curl -XGET 'http://192.168.80.200:9200/zhouls/emp/1?_source=name&pretty'
{
"_index" : "zhouls",
"_type" : "emp",
"_id" : "1",
"_version" : 3,
"found" : true,
"_source" : {
"name" : "tom"
}
}
[hadoop@djt002 elasticsearch-2.4.3]$ curl -XGET 'http://192.168.80.200:9200/zhouls/emp/1?_source=name,age&pretty'
{
"_index" : "zhouls",
"_type" : "emp",
"_id" : "1",
"_version" : 3,
"found" : true,
"_source" : {
"age" : 25,
"name" : "tom"
}
}
[hadoop@djt002 elasticsearch-2.4.3]$

 

 

 

 

 

[hadoop@djt002 elasticsearch-2.4.3]$ curl -XPOST 'http://192.168.80.200:9200/zhouls/emp/1/_update' -d '{"doc":{"name":"mack"}}'
{"_index":"zhouls","_type":"emp","_id":"1","_version":4,"_shards":{"total":2,"successful":1,"failed":0}}[hadoop@djt002 elasticsearch-2.4.3]$
[hadoop@djt002 elasticsearch-2.4.3]$
[hadoop@djt002 elasticsearch-2.4.3]$
[hadoop@djt002 elasticsearch-2.4.3]$ curl -XGET 'http://192.168.80.200:9200/zhouls/emp/1?_source=name&pretty'
{
"_index" : "zhouls",
"_type" : "emp",
"_id" : "1",
"_version" : 4,
"found" : true,
"_source" : {
"name" : "mack"                成功更改了name
}
}
[hadoop@djt002 elasticsearch-2.4.3]$ curl -XGET 'http://192.168.80.200:9200/zhouls/emp/1?pretty'
{
"_index" : "zhouls",
"_type" : "emp",
"_id" : "1",
"_version" : 4,
"found" : true,
"_source" : {
"name" : "mack",
"age" : 25
}
}
[hadoop@djt002 elasticsearch-2.4.3]$

 

 

 

 

 

 

总结:

ES所有更新,使用PUT或者POST

ES局部更新,使用POST

 

 

ES的所有更新和局部更新,底层有什么区别?

答:所有更新,是直接把以前的老数据,标记为删除状态,而后,再添加一条更新的。

      局域更新,只是修改某个字段。

相关文章
相关标签/搜索