此篇介紹使用 kibana 實作 CURD
為了讓直接讀此篇的人可以瞭解,有些說明可能和上一篇小小重複,請見諒
前置作業
kibana
的 首頁需要完成Elastic Cloud的部署,如未完成請先至 Elastic Stack第三重 完成部署
在主頁面,點擊 建立部署的那一筆中的 Quick link 的 Kibana
或
至部署詳目頁,點擊 應用程式(Applications) 的 Kibana 旁的 Launch
皆可另開分頁至 kibana
首頁
Dev Tools
的 Console
頁面點擊左上角的選單 (漢堡) -> Management -> Dev Tools
小試身手
進到 Dev Tools 後,會看到頁面分成左右兩欄,
左方可輸入指令來執行;右方為指令送出後的回應 (左方請求/右方回應),
預設左方應該會有
GET _search
{
"query": {
"match_all": {}
}
}
先說明一下此指令: 搜尋出此node所有的index下的所有documents
在此指令區塊任一行左鍵點擊一下,鍵盤游標在上面後,
就會發現右方有 三角形(開始鍵) 和 工具,
移到 三角形(開始鍵) 會顯示 Click to send request
,
點擊 三角形(開始鍵) 即會執行那區塊的指令
小技巧(Tips)
ctrl+Enter
會執行 鍵盤游標所在區塊的指令取得指定index內的所有documents
此處我取代原本預設的指令,只保留此篇會使用到的指令
Request
GET /shawn_index/_search
{
"query": {
"match_all": {}
}
}
[提醒] 不知道大家有沒有注意到,此處和 cURL 有點差異
- 不需要
?pretty
, 因為他已經幫你做好了- 不需要
-u USERNAME:PASSWORD
這類的驗證,因為kibana已是(SSO)登入狀態了
Response
[注意]
如果已經有根據昨天步驟新增index的話,此處的結果就不會有錯誤
如欲想遵照下方指令一一再操作一遍,可以先刪除原本的index (往下拉使用最後一個指令)
結果:
回傳錯誤(error),查看錯誤原因(error.root_cause.reason
)是no such index [shawn_index]
這是正確的,因為我根本還沒建立index也還沒新增資料!!!
會先教學操作 取得index內的documents,是為了讓後續操作可以以此指令來做驗證
新增資料(index)-不指定id
Request
POST /shawn_index/_doc
{
"name": "Benedict Cumberbatch",
"television": [
"Sherlock",
"To the Ends of the Earth"
]
}
Response
請注意鍵盤游標所在區塊的指令,鍵盤游標所在才是我此次執行的指令
結果:
成功新增資料,以此為例,此時我已新增了index shawn_index
,且建立了一筆資料
即使在沒有建立index以及指定fields情況下,仍可成功新增,是es的特性,詳細介紹可參閱 Elastic Stack第二重
驗證結果:
使用 取得指定index內的所有documents 來查看剛剛那筆資料是否存在
如果跟我剛剛一樣,有保留剛剛的指令的話,點擊那區塊指令並執行即可查看
更新資料(update)
Request
POST /shawn_index/_doc/{_id}
{
"name": "Benedict Cumberbatch",
"television": [
"Sherlock",
"To the Ends of the Earth",
"Hawking"
]
}
此處的{_id}
,請填入 新增資料(index)-不指定id 的response中的 _id
-> 0b80sHQB-16JRUR3B3sI
Response
成功更新資料,其中可以發現 _version
(版本計數) 更新到 2
驗證結果:
取得單筆資料(document)
Request
GET /shawn_index/_doc/{_id}
此處的{_id}
,請填入上述 新增資料(index)-不指定id/更新資料(update) 的response中的 _id
-> 0b80sHQB-16JRUR3B3sI
Response
新增資料(index)-指定id
Request
PUT /shawn_index/_doc/{_id}
{
"name": "Martin Freeman",
"television": [
"Sherlock",
"A Confession"
]
}
此處的{_id}
請自行輸入欲設定的id -> my_id
官方文件: 欲指定
_id
是用PUT
method,但實測過POST
也是可以的
Response
成功新增資料,其中可以發現 _id
是request內指定的 my_id
驗證結果:
刪除單筆資料(document)
Request
DELETE /shawn_index/_doc/my_id
此處的{_id}
請自行輸入欲刪除的 id -> my_id
Response
驗證結果:
刪除指定index
Request
DELETE /shawn_index
Response
如回傳為 "acknowledged" : true
代表指令已成功執行
小小新手,如有理解錯誤或寫錯再請不吝提醒或糾正
Official Es cURL examples
Index some documents
Delete index API