[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,所以要下苦功自己刻啦。 累了,明天见!


<<:  [网页漏洞] - 资料库漏洞 - 老调重弹

>>:  【PHP 设计模式大头菜】模板方法 Template Method

.NET Core第6天_如何将asp.net core应用部属到IIS_透过visual studio

部属.net core程序到IIS上 这里用local IIS测试 预先需要先安装 .NET Cor...

英雄列表范例:显示列表

关联到一个控制器 在服务器的控制器(ZK composer)载入资料後,要让它跟 zul 上写的元件...

[Day 9]从零开始学习 JS 的连续-30 Days---物件

宣告变数的资料型别--物件 1.数值( Number ) 2.字串( String ) 3.布林值(...

第 4 集:CSS 盒模型(box model)

此篇会介绍 box-model 是什麽以及如何使用,最後会分享几个使用技巧以及常见的迷思,建议阅读前...

【第三天 - Flutter Route 规划分享】

今日的程序码 => GitHub 前言 大家应该都知道 Flutter 的跳页都会分成 2 ...