UI 界面上的 Kibana 正则表达式查询

问题描述 投票:0回答:1

我正在尝试搜索一些日志

queryResults: time: 0.079 / 0 rows: 165 sql: select * from ( ( select name, sum(age) as total,
queryResults: time: 10.079 / 0 rows: 165 sql: select * from ( ( select name, sum(age) as total,
queryResults: time: 1.079 / 0 rows: 165 sql: select * from ( ( select name, sum(age) as total,

使用此搜索参数:

message: "select * from ( ( select name, sum(age) as total,"

Filter
作为

{
  "query": {
    "regexp": {
      "message.keyword": "/time: [1-9].+/"
    }
  }
}

这适用于https://regex101.com/r/z7V64Z/2 但我无法在 Elastic Search UI 上完成这项工作。 这可以节省我几个小时查看日志的时间。

专家可以帮忙吗?

注意:我确实参考了此链接 - Kibana Elasticsearch 中的正则表达式搜索,但没有多大帮助

预期输出: 仅记录 SQL 执行时间超过 1 秒以上的日志 例如

queryResults: time: 10.079 / 0 rows: 165 sql: select * from ( ( select name, sum(age) as total,
queryResults: time: 1.079 / 0 rows: 165 sql: select * from ( ( select name, sum(age) as total,
elasticsearch lucene kibana
1个回答
0
投票

由于您正在搜索关键字字段,它将整个字段索引为单个标记,因此您需要编写一个匹配整个标记而不是其中一部分的正则表达式。所以,像这样的东西应该有效:

{
  "query": {
    "regexp": {
      "message.keyword": ".*time: [1-9]\\..*"
    }
  }
}

您还可以使用这样的数字范围:

{
  "query": {
    "regexp": {
      "message.keyword": {
        "value": ".*time: <5-100>\\..*",
        "flags": "INTERVAL"
      }
    }
  }
}

另请注意,默认情况下,elasticsearch 生成的映射不会将长度超过 256 字节的字符串索引到关键字字段中。因此,如果这些消息长度超过 256 个字节,即使使用我上面显示的正则表达式查询也不会找到它们。

© www.soinside.com 2019 - 2024. All rights reserved.