【发布时间】:2018-06-20 09:57:40
【问题描述】:
我的目标是在 ElastAlert 中针对这种情况发出警报:午夜到凌晨 2 点之间没有发生任何事件。 (适用于任何日期)。问题是如何对 Elasticsearch 进行查询以匹配除特定时间之外的任何日期,因为您不能在“日期”类型的时间戳上使用正则表达式或通配符。有什么建议吗?
此代码返回“解析失败”:
"range": {
"timestamp": {
"gte": "20[0-9]{2}-[0-9]{2}-[0-9]{2}T00:00:00.000Z",
"lt": "20[0-9]{2}-[0-9]{2}-[0-9]{2}T02:00:00.000Z"
}
}
【问题讨论】:
-
你有没有尝试过?请分享以帮助我们更好地帮助您
-
在正则表达式中,
?是一个量词,不允许对一个量词进行量化。因此,要匹配任何数字,您可以使用[0-9]。这有帮助吗?gte": "20[0-9]{2}-[0-9]{2}-[0-9]{2}T00:00:00[.]000Z",? -
好吧,你是对的:'?'应该 '。'截至link。更正它。
-
并且
.应该被转义或在[]([.]) 中使用,否则它将匹配除换行符以外的任何符号。 -
我仍然认为问题在于无法结合正则表达式和时间戳。我怀疑时间戳实际上是一个纪元时间,因此在日期中间进行正则表达式在纪元时间中表达得太复杂了。
标签: regex elasticsearch elasticsearch-dsl elastalert