在 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
}
有任何問題,或是想看新主題?
聯絡我們