Kibana中KQL的使用

简单查询

简单查询就是 关键字匹配、字符串包含等,比如说如下语句会找出 name 字段是 banana 的所有数据:

name: banana

但是如果 name 包含 peach 和 peach test,然后下面两个语句查出来会是两个结果。

name: peach test

上述查询会将 name 是 peach 和 name 是 peach test 的都给查出来

name: "peach test"

上述查询只会将 peach test 查出来,因为如果不加引号会自动关键字分词,将包含该关键字的所有数据匹配出来。

条件运算符

条件运算符就是 > >= < <=,在 KQL 里边都支持,使用也很简单,比如如下语句表示 age 字段大于等于 10。

age >= 10

逻辑运算符

查询语言自然少不了逻辑运算符 与或非,在 KQL 中代表了 and or not

and 的用法:

age >= 10 and age < 100

上述语句表示查询出 age 在 10 到 100 的左开右闭区间中的所有数据。

or 的用法:

name: "Jeff" or name: "Kitty"

上述语句表示筛选出 name 包含 Jeff 或者 Kitty 关键字的所有数据。

not 的用法:

not age >= 10

上述语句表示筛选出 age 小于 10 的所有数据。

其中 and 的优先级比 or 的高

age < 100 or name: wang and age >= 10

and 优先级高会先结合,所以意思是 满足 name 是wang age >= 10 或者 age < 100。

当然也可以通过小括号来改变优先级,比如:

(age < 100 or name: wang) and age >= 10

意思是 age >=10 并且这条数据的 name是wang或者age < 100

同一字段运算符简写

可以用括号将多个逻辑运算符和条件合并到一起

age = 10 or age = 100
# 等价于
age: ( 10 or 100)

通配符

通配符可以用于查找出存在某个key的数据

name: *

表示查找出所有带 name 字段的数据

system: win*

可以匹配到 system: win7,system: win10 等。

字段嵌套查询

首先准备一个多层的数据,比如下面的这几条数据。

{
  "level1": [
    {
      "level2": [
        {
          "prop1": "foo",
          "prop2": "bar"
        },
        {
          "prop1": "baz",
          "prop2": "qux"
        }
      ]
    }
  ]
}

比如想筛选 level1.level2.prop1 是 foo 或者是 baz的,可以这样写:

level1.level2 { prop1: "foo" or prop1: "baz" }

总结

KQL是一个比较简单筛选数据的查询语言,包括条件、逻辑、多层查询等用法,能辅助报表的制作和实时日志的筛选。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值