Kibana查询语法和Lucene相同,下面是Lucene的查询语法介绍。
注意
:Lucene查询语法不适合在程序中使用,程序中使用可以调用Lucene-API,API提供了丰富功能来组合定制你所需要的查询器,查询语法是为手工输入高级查询设计的,而不是为程序拼接语法串而设计的。
Lucene支持多字段数据,当你在查询的时候你可以指定一个字段查询,key和value用冒号隔开即可,如:
MODULE:FrontNginx AND thumbnail
Lucene支持在Term中使用通配符来支持模糊查询,“?”通配符一个字符,“*”通配多个字符
te?t
test*
te*t
注意
:不能将“*”和“?”放在第一个字符来查询。
Lucene支持基于编辑距离算法的模糊搜索,可以使用波浪符号“~”放在查询词的后面,比如搜索一个与“ahumbnail”拼写相近的词可以使用:
ahumbnail~
该查询将寻找类似“ahumbnail”和“thumbnail”等的词语,也叫相似度查询。
Lucene支持指定距离查询,可以使用波浪号“~”加数字在查询词后。举例来说搜索“thumbnail”和“quality”距离10个字符以内,你可以使用如下语法
"thumbnail quality"~10
范围查询允许指定某个字段最大值和最小值,查询在二者之间的所有数据。也可以对非字符类型来进行范围查找:
Parsed.status:[400 TO 499]
Parsed.bucket:{mail-online TO nail-online}
注意
:范围查找在Kibana中查找的结果并不准确。
Lucene支持给不同的查询词设置不同的权重。设置权重使用“^”符号,将“^”放于查询词的尾部,同时跟上权重值,权重因子越大,该词越重要。设置权重允许你通过给不同的查询词设置不同的权重来影响文档的相关性,比如:
jakarta apache
jakarta^4 apache
"jakarta apache"^4 "jakarta lucene"
在默认情况下,权重因子为1.
布尔操作符可以将多个Term合并为一个复杂的逻辑查询。Lucene支持AND,
+,OR,NOT, -作为操作符号。注意,所有的符号必须为大写。
MODULE:FrontNginx AND Parsed.status:403
"avaimg.nosdn.127.net" OR Parsed.status:403
NOT Parsed.status:200
+操作符规定在其后的Term必须出现在文档中,也就是查询词中的MUST属性。
-操作符排除了包含其后Term的文档,跟NOT有点类似,如下:
+Parsed.status:200 -FileName:"nos_access.log"
Lucene支持使用圆括号来将查询表达式分组,这将在控制布尔控制查询中非常有用。
(Parsed.status:200 Parsed.status:206) AND "mail-online"
这种语法对消除歧义,确保查询表达式的正确性具有很大的意义。
Lucene支持对字段用圆括号来进行分组,当我们要查询status中含有“200”和“206”时,我们可以使用如下语法:
Parsed.status:(+200 OR 206)
Lucene支持转义查询中的特殊字符,以下是Lucene的特殊字符清单:
+ - && || ! ( ) { } [ ] ^ " ~ * ? : \
转义特殊字符我们可以使用符号“\”放于字符之前。
Lucene查询语法