Elasticsearch之更新(全部更新和局部更新)


 

  前面的基礎,

Elasticsearch之curl創建索引庫

Elasticsearch之curl創建索引

Elasticsearch之curl創建索引庫和索引時注意事項

Elasticsearch之cur查詢索引

 

 

 

 

 

  首先,明確一個概念,es包括全部更新和局部更新

 

 

ES全部更新

  ES可以使用PUT或者POST對文檔進行更新(全部更新),如果指定ID的文檔已經存在,則執行更新操作。

比如,我這里,id=1文檔存在,那么,就是es全部更新。

注意:

  es執行更新操作的時候,ES首先將舊的文檔標記為刪除狀態,然后添加新的文檔,舊的文檔不會立即消失,但是你也無法訪問,

ES會在你繼續添加更多數據的時候在后台清理已經標記為刪除狀態的文檔。

 

 

 

 

 

 

 

 

 

ES局部更新

  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的全部更新和局部更新,底層有什么區別?

答:全部更新,是直接把之前的老數據,標記為刪除狀態,然后,再添加一條更新的。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM