我正在尝试搜索一些日志
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,
由于您正在搜索关键字字段,它将整个字段索引为单个标记,因此您需要编写一个匹配整个标记而不是其中一部分的正则表达式。所以,像这样的东西应该有效:
{
"query": {
"regexp": {
"message.keyword": ".*time: [1-9]\\..*"
}
}
}
您还可以使用这样的数字范围:
{
"query": {
"regexp": {
"message.keyword": {
"value": ".*time: <5-100>\\..*",
"flags": "INTERVAL"
}
}
}
}
另请注意,默认情况下,elasticsearch 生成的映射不会将长度超过 256 字节的字符串索引到关键字字段中。因此,如果这些消息长度超过 256 个字节,即使使用我上面显示的正则表达式查询也不会找到它们。