【问题标题】:Kibana search with regular expression not working使用正则表达式的 Kibana 搜索不起作用
【发布时间】:2019-07-06 11:24:37
【问题描述】:

我正在尝试使用正则表达式在 Kibana 中查找一些日志。我知道 Kibana 不支持“经典​​”正则表达式,而是支持 Lucene 查询语法。我已经阅读了它的文档 (https://www.elastic.co/guide/en/elasticsearch/reference/6.7/query-dsl-regexp-query.html#regexp-syntax) 并且我的查询应该可以工作,但它们没有。

这是一个示例日志条目,我想用我的查询来定位:

时间为:同步于 2019-02-12 19:15:09.402 开始;帐户 下载:+760ms/760ms;账户数据下载:+1221ms/1981ms; 分类推送:+0ms/1981ms;分类 开始时间:+131ms/2112ms;分类完成:+123ms/2235ms;在 总计:2235 毫秒。

我最终要找到的是所有“分类开始”时间超过某个阈值的日志条目。但是,我的查询在尝试接近最终查询时已经失败。

我在查询时得到结果:

message:"/categorization started/"

但是当我将其修改为:

message:/categorization started/

我什么也得不到。以下任何尝试也无济于事:

 message:/categorization\sstarted/
 message:/.*categorization\sstarted.*/
 message:/.*categorization.*started.*/

此时我已经迷路了——为什么所有这些查询都不匹配?

在我看来,应该得到我想要的最终查询应该如下(查找分类开始时间为 10,000 毫秒或更多的所有条目):

message:/.*categorization started:\+<10000-99999>ms.*/

不用说,这当然也不返回任何内容,当上述查询已经失败时,这并不让我感到惊讶。

谁能向我解释我做错了什么?

谢谢

【问题讨论】:

  • 开头和结尾不能有/+ 必须进行双重转义。 ".*categorization started:\\+&lt;10000-99999&gt;ms\\.*"。确保设置"flags":"ALL"
  • 可能有误会。我正在使用 kibana 网站输入查询。在那里它解释了正则表达式必须在前导和尾随斜杠中捕获。见:elastic.co/guide/en/elasticsearch/reference/6.7/…
  • 不确定,但您匹配的字符串可能是空格标记的。见this article
  • 您的链接,我猜也是您,跳过了文档中解释这一点的部分:“...Elasticsearch 会将正则表达式 应用于标记器生成的术语对于该字段,而不是该字段的原始文本。”
  • 我不相信 Lucene 处理得很好。我在 Kibana 中找到了另一种方法来执行此操作。检查这个stackoverflow.com/a/55160264/2251411

标签: regex amazon-web-services elasticsearch lucene kibana


【解决方案1】:

我建议你使用

message:*categorization started*

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 2011-09-02
    • 1970-01-01
    相关资源
    最近更新 更多