日志都进了 ES,Kibana 的 Discover 页面也打开了,可要在一堆数据里找出那条超时请求,翻页能翻到下班。掌握 kibana查询es基本语法,几秒就能筛出来。
搜索框有两套语言
默认走 KQL,也就是 Kibana Query Language,写法接近键值对,上手快。在搜索框右侧可以切成 Lucene 语法,功能更全,支持正则和更复杂的组合。日常用 KQL 基本够,要做高级匹配再切。
KQL 的几种常用写法
status: 500;message: timeout and level: error;response_time > 3000;not url: /health字段名加冒号再跟值;多个条件用 and、or 连接;数值字段能直接比大小;前面加 not 取反。值里带空格或中文,用引号包起来,不然会被拆成几个词分别匹配。
Lucene 语法的补充
切到 Lucene 后,通配符用星号和问号,范围查询写成方括号形式,字段存在与否可以用 _exists_ 判断。这些写法在 KQL 里要么不支持,要么形式不同,需要时再切过去,别一开始就上复杂的。
字段筛选与时间范围
- 时间选择器:右上角先框定范围,默认近十五分钟,查历史得手动改,不然会以为数据没进来。
- 左侧字段列表:点字段旁边的加号加入筛选,比手敲语法快,也能先摸清有哪些字段可用。
- 保存搜索:把命中的条件存下来,下次直接点,还能挂到仪表盘上复用。
查不到结果先看两处
一是时间范围是不是太窄,二是字段类型。keyword 类型支持精确匹配,text 类型会被分词,拿 text 字段做等值比较经常匹配不上。可以先在左侧点开字段看分布,确认字段名和取值格式再写条件。
- 判断提醒:查询没结果先查时间范围,再确认字段类型;text 字段走全文检索,keyword 字段才适合等值匹配,混用是新手最常见的错。