以Key:Value的形式构建查询条件,
Key即是域名(Field), Value即是值项(Term)
默认域名可以省略掉, Lucene的默认域是text域, kibana的默认域是message域, message会包含所有日志内容.
title:abc # 在title这个域中搜索 abc, 所有title 包含 abc 都会被搜索出来.
title:"abc def" # 在title这个域中搜索 abc def 这个完整的字符串.
title:abc def # 这个写法不同于上面的查询语句, 其实是两个查询条件, 在title域中搜索abc, 并且在默认域中搜索def.
title:"1=1" # 如果term有空格或等于号等特殊字符, 需要用双引号括起来.
对于数值项可以使用>、<、=操作符
account_number:<100
多个查询项的组合, 使用大写的 AND 、 OR 、NOT实现与或非.
title:"The Right Way" AND text:go
account_number:<100 AND balance:>47500
支持通配符
Kibana 一般不需要使用通配符, 因为 Kibana 的 key:value 查询条件, 只要域值包含 value 就能被搜索出来, 除非我们的值项有多个特征, 可以用通配符将多个特征连起来.
? 号可以匹配任意一个字符
- 号可以匹配任意多个字符
但通配符可以放在term的中间或尾部, 不能放在term的最前面.
支持正则
ES 中正则性能很差,而且支持的功能也不是特别强大,尽量不要使用, 正则表达式需要用//括起来.
message:/[mb]oat/ # 匹配 moat 或者 boat
范围限定
方括号代表包含边界值, 花括号代表不包含边界值
mod_date:[20020101 TO 20030101]
title:{Aida TO Carmen}