简介
说明
本文介绍Kinaba的KQL查询语法的使用。
官网网址
KQL语法:https://www.elastic.co/guide/en/kibana/7.7/kuery-query.html
Lucene语法:https://www.elastic.co/guide/en/kibana/7.7/lucene-query.html
Kibana的两种查询语法
Kibana的7.x版本支持两种查询语法:
- KQL(Kibana Query Language)语法
- Lucene 语法
默认是KQL,如果关闭KQL,则使用Lucene语法。
Kibana查询界面的进入方式如下:
KQL查询语法
全文搜索
说明
直接输入查询内容即可。
示例:查找包含hello,或者包含world,或者两者都包含。
限定字段
语法
字段名: 匹配值
示例1:查询FlightNum字段匹配"4H2KUBH"字符串的文档。
示例2:查询FlightNum字段存在(无论值是什么)的文档。
范围查询
说明
可以指定日期、数字或者字符串字段的范围。关系运算符只能用在数值和时间类型的字段。
支持关系运算符如下:
- <= 小于等于
- >= 大于等于
- < 小于
- > 大于
示例:年龄大于等于30的
逻辑操作
支持逻辑运算符如下:
- and:与
- or:或
- not:非
示例1:and 的用法
查询name字段包含jane,且addr字段包含beijing的记录。
注意:查询结果不区分大小写
示例2:or 的用法
查询name字段包含jane,或者addr字段包含beijing的记录,或者两者都匹配。
示例3:not 的用法
查询出response字段中不包含200的记录
查询response包含200,并且整条记录不包含yes的数据记录
查询response包含200,且response不包含yes的记录
示例4:多个运算符结合
查询name包含jane且addr包含beijing的记录,或者job包含teacher的记录。
KQL中,and的优先级高于or。上方结果可以使用小括号来理解
示例5:值里使用运算符
查询response包含200,或者response包含404,或者包含200和404的记录。
或者
注意:不保证顺序、不区分大小写。
嵌套查询
原始数据
需求
查找 level1.level2.prop1 是 foo 或者是 baz的
写法
KQL查询通用规则
如下几项规则适用于所有场景,包括:全文检索、限定字段、模糊字段等。
引号
直接输入内容则会将内容进行分词,然后查询;若不想分词,整词查询,则两边加引号即可。
示例1:查找包含hello,或者包含world,或者两者都包含。
示例2:查找包含hello world的。
模糊查询
说明
? 匹配单个字符
* 匹配0到多个字符
示例1:全文索引
下边这个可匹配:kibana
下边这个可匹配:elasticsearch
示例2:限定字段
下边这个可匹配title含有kibana的文档。
示例3:模糊字段
下边这个可匹配title含有kibana的文档。
容错查询
说明
~: 在一个单词后面加上~启用模糊搜索,可以搜到一些拼写错误的单词。
示例
能匹配到 frist