iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 6
1
Elastic Stack on Cloud

Elastic Stack武學練功坊系列 第 6

Elastic Stack第六重

  • 分享至 

  • xImage
  •  

Elasticsearch CRUD

此篇介紹使用 kibana 實作 CURD
為了讓直接讀此篇的人可以瞭解,有些說明可能和上一篇小小重複,請見諒


Elasticsearch CRUD (kibana)

使用 kibana 實作 CURD

前置作業

  1. 進到 kibana 的 首頁

需要完成Elastic Cloud的部署,如未完成請先至 Elastic Stack第三重 完成部署

在主頁面,點擊 建立部署的那一筆中的 Quick linkKibana
Main Page

至部署詳目頁,點擊 應用程式(Applications)Kibana 旁的 Launch
Detail Page
皆可另開分頁至 kibana 首頁

  1. 進到 Dev ToolsConsole 頁面

點擊左上角的選單 (漢堡) -> Management -> Dev Tools
Dev Tools location

小試身手
進到 Dev Tools 後,會看到頁面分成左右兩欄,
左方可輸入指令來執行;右方為指令送出後的回應 (左方請求/右方回應),
預設左方應該會有

GET _search
{
  "query": {
    "match_all": {}
  }
}

先說明一下此指令: 搜尋出此node所有的index下的所有documents

在此指令區塊任一行左鍵點擊一下,鍵盤游標在上面後,
就會發現右方有 三角形(開始鍵)工具
移到 三角形(開始鍵) 會顯示 Click to send request
點擊 三角形(開始鍵) 即會執行那區塊的指令
GET Search

小技巧(Tips)

  • 快捷鍵 ctrl+Enter 會執行 鍵盤游標所在區塊的指令
  • Console(左欄指令區塊) 內是可以放多組的,只要指令不重疊到同一行即可 (可參閱下方範例圖)

取得指定index內的所有documents

此處我取代原本預設的指令,只保留此篇會使用到的指令

Request

GET /shawn_index/_search
{
  "query": {
    "match_all": {}
  }
}

[提醒] 不知道大家有沒有注意到,此處和 cURL 有點差異

  • 不需要 ?pretty , 因為他已經幫你做好了
  • 不需要 -u USERNAME:PASSWORD 這類的驗證,因為kibana已是(SSO)登入狀態了

Response
Search 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 Response
結果:
成功新增資料,以此為例,此時我已新增了index shawn_index,且建立了一筆資料

即使在沒有建立index以及指定fields情況下,仍可成功新增,是es的特性,詳細介紹可參閱 Elastic Stack第二重

驗證結果:
使用 取得指定index內的所有documents 來查看剛剛那筆資料是否存在

如果跟我剛剛一樣,有保留剛剛的指令的話,點擊那區塊指令並執行即可查看

Verification

更新資料(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
Update Response
成功更新資料,其中可以發現 _version(版本計數) 更新到 2

驗證結果:
Verification

取得單筆資料(document)
Request

GET /shawn_index/_doc/{_id}

此處的{_id},請填入上述 新增資料(index)-不指定id/更新資料(update) 的response中的 _id -> 0b80sHQB-16JRUR3B3sI

Response
Retrieve Doc 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
Index With Id Response
成功新增資料,其中可以發現 _id 是request內指定的 my_id

驗證結果:
Verification

刪除單筆資料(document)
Request

DELETE /shawn_index/_doc/my_id

此處的{_id}請自行輸入欲刪除的 id -> my_id

Response
Delete Doc Response

驗證結果:
Verification

刪除指定index
Request

DELETE /shawn_index

Response
Delete Index Response
如回傳為 "acknowledged" : true 代表指令已成功執行


小小新手,如有理解錯誤或寫錯再請不吝提醒或糾正


Reference

Official Es cURL examples
Index some documents
Delete index API


上一篇
Elastic Stack第五重
下一篇
Elastic Stack第七重
系列文
Elastic Stack武學練功坊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言