iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 28
0
Elastic Stack on Cloud

Elastic 戰台股系列 第 28

[Day28] Advanced Watcher

昨天發現 Threshold Alert 的設計無法符合我的選股程式的需求,今天來看看 Advanced Watcher 吧!

建立 Advanced Watcher

首先,點擊下圖的按鈕:
https://ithelp.ithome.com.tw/upload/images/20201012/20129624rkXQusTfen.png
然後會看到下面的介面:
https://ithelp.ithome.com.tw/upload/images/20201012/20129624sEMgU9Xtke.png
Watch Json 的格式讓人非常熟悉,就是前面玩過的 RESTful API 的組合,高度的客製化就可以實作在 Query。

如何設置一個 Watch

一個 Watch 包含了四個必要部分:

  1. Trigger: 定義監控的時間點與週期
  2. Input: 要被監控的資料
  3. Condition: 設定決定要執行 Action 的條件
  4. Action: 當滿足條件後要觸發的動作

透過 Advanced Watch 監控股價

首先,我設定一個實驗性的問題:「每 10 秒,檢查 stock-history-prices-daily Index,當股票代號 1101 的個股,最後收盤價大於 40 元時,把結果寫入新的 Index」。這麼做的目的,是前端以後只要定期去檢查選股結果的 Index 即可,日後只要在收盤價被更新後,再指定執行時間即可,10秒純粹是不想等太久啦!Kibana 預設給了一個範本,就照著改改看吧!

{
  "trigger": {
    "schedule": {
      "interval": "10s"  #1
    }
  },
  "input": {
    "search": {
      "request": {
        "body": { #2
          "size": 1,
          "sort": [
            {
              "date": {
                "order": "desc"
              }
            }
          ],
          "query": {
            "match": {
              "stock_id": "1101"
            }
          }
        },
        "indices": [
          "stock-history-prices-daily" #3
        ]
      }
    }
  },
  "condition": {
    "compare": {
      "ctx.payload.hits.hits.0._source.close": { #4
        "gte": 40
      }
    }
  },
  "actions": {
    "my-index-action": {
      "index": {
        "index": "stock-selection-daily" #5
      }
    }
  }
}

上面的 Query DSL #1 ~ #5 即是依我定義的問題進行修改。來看看結果:
https://ithelp.ithome.com.tw/upload/images/20201012/20129624Nmgay6rAjh.png
點擊 Watcher ID 就可以查看 Watch 的執行結果:
https://ithelp.ithome.com.tw/upload/images/20201012/20129624Ch404VBhiB.png
直接搜尋 stock-selection-daily 更直觀的看看結果:

GET /stock-selection-daily/_search 
{
  "query" : {
        "match_all": {}
    }
}

https://ithelp.ithome.com.tw/upload/images/20201012/20129624upJfPli7Tx.png

不錯! 如預期的成功設置了 Watcher。可惜的是 Elasticsearch DSL 文件上,目前並沒有支援 Watcher,所以要下苦功自己刻啦。 累了,明天見!


上一篇
[Day27] 監視股價 - Watcher
下一篇
[Day29] Index Lifecycle Management 簡介
系列文
Elastic 戰台股30

尚未有邦友留言

立即登入留言