elasticsearch Updating documents

在ES裡, 更新documents到index不是一件簡單的事情, 我們得在這裡留個心眼.

眾所皆知RESTful風格使用HTTP的動詞來進行所謂的Update, ES也是如此. 

要注意到ES的更新有兩種方式

  • 整個docment更新(取代,覆蓋)
  • 根據某個field更新(count += 3, append字符串, 替數組增加元素, 刪除field)
//根據某個field更新
$ curl -XPOST 'localhost:9200/test/type1/1/_update' -d '{ "script" : "ctx._source.counter += count", "params" : { "count" : 4 } }'

 通常我們會遇到要更新的某個field不存在, 那我們可以使用 upsert 來給定默認的值

$ curl -XPOST 'localhost:9200/test/type1/1/_update' -d '{
    "script" : "ctx._source.counter += 1",
    "upsert" : {
        "counter" : 0
    }
}'

 

posted @ 2014-06-27 10:22  Henry JAO  阅读(224)  评论(0编辑  收藏  举报