Elasticserch 日志查询
夜莺( Nightingale )Elasticserch
ES 日志查询目前支持两个查询语法,下面分别介绍下
query string 语法
query string 查询语法支持以下几种常见的查询方式:
字段查询
可以指定字段名称进行查询:
status:active- 查询 status 字段包含 active 的记录title:(quick OR brown)- 查询 title 字段包含 quick 或 brown 的记录author:"John Smith"- 查询 author 字段包含完整短语 “John Smith” 的记录
通配符查询
支持使用 ? 和 * 通配符:
qu?ck- ? 匹配单个字符bro*- * 匹配零个或多个字符
模糊查询
使用 ~ 运算符进行模糊匹配:
quikc~- 匹配与 quick 相似的词"fox quick"~5- 短语查询中的词之间可以相隔最多5个位置
范围查询
支持数值和日期范围:
count:[1 TO 5]- 闭区间,包含1和5count:{1 TO 5}- 开区间,不包含1和5date:[2022-01-01 TO 2022-12-31]age:>10- 大于10age:>=10- 大于等于10
布尔操作符
可以使用 AND、OR、NOT 等布尔操作符:
quick AND brown- 同时包含两个词quick OR brown- 包含其中任意一个词quick NOT fox- 包含 quick 但不包含 fox
更多详细语法可以参考 Elasticsearch 官方文档
KQL 语法
KQL (Kibana Query Language) 是一种简单的基于文本的查询语言。下面介绍几个常用的查询示例:
例子1:精确匹配
说明:查询 method 字段值为 GET 的日志
过滤条件:method: GET
例子2:使用通配符
说明:查询所有以 error 开头的日志级别
过滤条件:level: error*
例子3:范围查询
说明:查询响应时间在 1 秒到 5 秒之间的请求
过滤条件:response_time >= 1 and response_time <= 5
例子4:组合查询
说明:查询 method 为 POST 并且状态码为 500 或 502 的错误日志
过滤条件:method: POST and status_code: (500 or 502)
例子5:嵌套字段查询
说明:查询用户信息中名字为 Alice,姓氏为 White 的日志
过滤条件:user:{ first: "Alice" and last: "White" }
更多详细的 KQL 语法可以参考 Kibana 官方文档