iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
2
Elastic Stack on Cloud

Elastic 戰台股系列 第 4

[Day04] 盤後資料上 ES Cloud - RESTful API Introduction

  • 分享至 

  • xImage
  •  

雲南黃悶雞製作所需香料: 大蒜 7-10瓣,辣椒 1 根,蔥 1 根,薑 2 片,草果 2 顆,八角 2 顆
明日待續…

在 Day03,我利用 Kibana 的 Dev tool 手動的建立 Index 以及 Index 一筆股票盤後資訊 Document。根據 Day01 中描述的系統架構,如果打算把本機現有的資料上傳到 ES Cloud,用手鍵入也太蠢,所以今天要來研究一下如何透過 RESTFul API 上傳資料。

RESTful API with JSON over HTTP

透過 RESTful API,不同的程式語言都能夠與 Elasticsearch 溝通。一個標準的 ES 請求,有以下的格式:

curl -X<VERB> '<PROTOCOL>://<HOST>/<PATH>?<QUERY_STRING>' -d '<BODY>'
  • VERB
    支援用來存取 ES 的 HTTP 方法,包含 GET,PUT,POST,DELETE
  • PROTOCOL
    HTTP/HTTPS
  • HOST
    Elasticsearch cluster 的 host name
  • PATH
    欲操作的 Elasticsearch service.
  • Body
    JSON 格式的內容

Authentication: Basic Authentication

Elasticsearch 支援標準的 HTTP Basic Authentication,API header 必須包含 Authorization:

Authorization: Basic <TOKEN>
TOKEN = base64(USERNAME:PASSWORD)

在 Elastic Cloud 部署 Elasticsearch 時,有提示用戶要把 ID/PASSWORD 記錄下來,此時就會派上用場啦。

Authentication: API Key

除了 Basic Authentication 外,ES 也提供 API Key 做驗証。這裡有一個新手的踩坑點,我一開始使用了 Elastic Cloud 介面產出的 API Key 作 ES API 驗証,如圖:
https://ithelp.ithome.com.tw/upload/images/20200913/20129624NeB4kYFK55.png
但對 ES 進行任何 CRUD 的操作都會失敗,在 Google 上的查找也不知所以然,後來在高手的指點下,才知道,Elastic Cloud 的 API Key 是用來管理雲端服務用;而操作 ES Stack 的 API Key 必須在 ES 中產生。如下圖,在 Dev Tool 中新增一把 Key:
https://ithelp.ithome.com.tw/upload/images/20200913/20129624hXc3A2xQYU.png
這把 API Key 還不能直接用來當作 credential,正確的用法如下:

Authorization: ApiKey <TOKEN>
TOKEN = base64(ID:api_key)

我們可以在 Kibana 的 Stack Management 中,管理建立的 API Keys:
https://ithelp.ithome.com.tw/upload/images20200913/20129624MdvtjbVma1.png

今天在 Authorization 的地方困比較久,明天再來繼續進行 RESTFul API 的實驗。


上一篇
[Day03] 盤後資料上 ES Cloud - 建立資料
下一篇
[Day05] 盤後資料上 ES Cloud - 以 Postman 為例
系列文
Elastic 戰台股30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
gior__ann
iT邦新手 2 級 ‧ 2021-05-03 15:17:58

想請教您一個問題
關於ApiKey 的實作

API Key 還不能直接用來當作 credential

Authorization: ApiKey <TOKEN>
TOKEN = base64(ID:api_key)

這部分不太懂怎麼做,不知道該去哪邊下這指令@@

我是用命令提示字元工具 ( 應該是錯的很離譜/images/emoticon/emoticon16.gif)

https://ithelp.ithome.com.tw/upload/images/20210503/20120722STCZWP6Eym.png

我要留言

立即登入留言