ElastAlert flatline 找不到结果

ElastAlert flatline not finding results

正在使用 ElastAlert 框架创建 flatline 警报类型。

当我在 Kibana UI 中使用查询时,它的语法完全相同 returns 结果,但 ElastAlert 没有 returning 任何结果。

这是我的 elastalert-rule-file.xml

name: Test Flatline
type: flatline
run_every:
    seconds: 15
relalert: 
    minutes: 0
es_host: localhost
es_port: 9200
threshold: 1
timeframe: 
    minutes: 5
index: my-index-*
filter: 
- query:
    query_string:
        query: "_type:metric"  # this returns results in both kibana and elastalert
        #query: "_type:metric AND _exists_:My\ Field\ With\ Spaces.value" # this returns results in kibana but not in elastalert

timestamp_type: unix_ms
alert:
  - command
command: ["my-bash-script.sh"]

所以我尝试使用查询,如果我只指定 _type:metric,那么 Kibana 中的搜索结果似乎与 ElastAlert 中的搜索结果相匹配。

然而,当我尝试在第二个查询中使用带有 _exists_ lucene 语法的查询时,ElastAlert 没有 return 任何东西,而 Kibana 似乎对语法没问题。

有什么想法吗?

我知道了...只是忘了 post 一个答案。

显然,对于带有空格的字段,您需要转义反斜杠,以便相关行看起来像这样:

query: "_type:metric AND _exists_:My\ Field\ With\ Spaces.value"

此外,在您使用 Ansible (YAML) 配置的特殊情况下,您需要添加一个反斜杠来转义每个反斜杠。

所以 YAML 文件中的条目看起来像这样:

query: "My\\ field\\ With\\ Spaces.value"

字段数据使用双引号可以避免转义:

query: '_type:metric AND _exists_:"My Field With Spaces.value"'