在 ELK 搭建的過程中,我們除了透過 Kibana 檢視 Elasticsearch 資料 (以下簡稱 ES),常常也會需要藉由 Kibana 的 API 對 ES 進行資料更新,不過與正規化資料庫小小不一樣的地方在於,新增同樣的 ID 資料並不會觸發 Exception,而是以覆蓋的方式進行。
開發人員頁面
新增、更新
假設要新增資料在 superhero 這個 index 中,所以:
POST /superhero/_doc/ { "name": "batman"}
上面的例子 ES 會自動幫資料建立 ID,但我們也能自已控制 ID,所以:
POST /superhero/_doc/1 { "name": "batman"}
自己控制 ID 要注意的是,同樣的 ID 重複新增並不會觸發錯誤,而是覆蓋。
假設 ID=1,接著更新一下資料,所以:
PUT /superhero/_doc/1 { "name": "superman"}
接著查詢一下操作結果:
GET /superhero/_search
{ "_index" : "test", "_type" : "_doc", "_id" : "1", "_score" : 1.0, "_source" : { "name" : "superman" }}
CreateOrUpdate
ES 也有支援 CreateOrUpdate 的操作方式
在 body 中多提供一個欄位讓 ES 識別:doc_as_upsert: true
POST superhero/_update/1 { "doc": { "career": "darknight" }, "doc_as_upsert": true}
有任何問題,或是想看新主題? 聯絡我們