B i M A P

Kibana|透過 API 更新 Elasticsearch

Kibana logo


在 ELK 搭建的過程中,我們除了透過 Kibana 檢視 Elasticsearch 資料 (以下簡稱 ES),常常也會需要藉由 Kibana 的 API 對 ES 進行資料更新,不過與正規化資料庫小小不一樣的地方在於,新增同樣的 ID 資料並不會觸發 Exception,而是以覆蓋的方式進行。


開發人員頁面


Kibana dev tool

Kibana dev tool



新增、更新


假設要新增資料在 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
}



有任何問題,或是想看新主題? 聯絡我們

延伸閱讀
winstonlu的大頭照
ELK 達人

我們致力於 ELK 的各種應用,協助企業建置相關服務。我們也提供基於 ELK 的各種解決方案,有任何問題,歡迎加入我們的官方 Line,或來信詢問,期待與您面對面的機會。