iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 3
2
Elastic Stack on Cloud

Elastic 戰台股系列 第 3

[Day03] 盤後資料上 ES Cloud - 建立資料

受到團長的啟發,接下來幾天,我來分享一道母親的拿好好菜:雲南黃悶雞,的製作方式。
備料:1. 超市的切塊雞肉,我偏好大雞腿切塊喔! 2. 義美豆干 (因為醬汁太下飯了,放個豆干下去燒,簡直絕配)
明日待續…

在 Day02 ,我理解了 Elasticsearch 的基礎架構和資料架,今天來往前推進一步 - 放一筆盤後收盤資料到 ES Cloud。

建立 Index

在關聯式資料庫的世界,要存放資料就要先建立一個新的 Database。而在 ES 中,就是新建一個新的 Index,這個動作是透過 PUT 來完成,如下圖:
https://ithelp.ithome.com.tw/upload/images/20200912/201296242QFBTAgBmz.png

Index Document

有了資料庫後,當然就是要往裡新增資料,對 ES 來說,正確的術語叫作 Index Document。這個動作是透過 POST,測試把 0050 在 2020/09/11 的收盤資料整理成 JSON 格式後,新增進 history-prices index。詳見下圖:
https://ithelp.ithome.com.tw/upload/images/20200912/20129624G2JHCXFLfL.png
這裡可以注意的一點是,在 Response 的內容中,_id 是由 ES 自動幫我們產生的,而 _shards 物件裡顯示有這筆 Document 被成功的存放在 2 個 Shard 中,這是因為我在建立 Index 時,設定了 1 個 Shard 以及 1 個 Replica Shard。

更新 Document

每個股票的週 K 、月 K 統計資訊,是每日會變動的,因此當週或當月的 Document 必須每日更新。在 ES 中,對 Document 的更新是透過 POST,如下圖:
https://ithelp.ithome.com.tw/upload/images/20200912/20129624JRKiNCFcGr.png
我嘗試把成交量改成 3000000 股。透過查詢 ID,可以察看結果:
https://ithelp.ithome.com.tw/upload/images/20200912/20129624u7DsCigLzF.png

衍生問題

上面的操作看似簡單,但在實務的系統設計上,我馬上就想到了幾個技術問題待解:

  1. 系統為 Document 自動生成 ID,無法確保 Document 的獨特性,把相同的 Document 再 Index 一次,就會有重覆的資料被寫入。因此勢必需要想一個生成 ID 的方式,方便進行查詢/更新。
  2. 今天的實驗是手動輸入資料,大量資料勢必要想更有效率的方式。

看來明天有得忙了!


上一篇
[Day02] 盤後資料上 ES Cloud - 認識 ES 資料架構
下一篇
[Day04] 盤後資料上 ES Cloud - RESTful API Introduction
系列文
Elastic 戰台股30

1 則留言

0

想吃想吃!

我要留言

立即登入留言