Kibana查询语法详解

Kibana查询语法详解

Kibana查询语法和Lucene相同,下面是Lucene的查询语法介绍。

注意:Lucene查询语法不适合在程序中使用,程序中使用可以调用Lucene-API,API提供了丰富功能来组合定制你所需要的查询器,查询语法是为手工输入高级查询设计的,而不是为程序拼接语法串而设计的。

1. 简单说明

1.1 Terms

  • 一个查询将分解为若干Term以及操作符,有两种Term,其一是单一Term,其二为短语
  • 单一Term是经过分析器分词后的最小单元,就是一个简单的单词,比如:hello、world等
  • 短语是用双括号括起来的一组词,例如:”hello world”
  • 多个Term可以通过布尔操作合并在一个更加复杂的查询器中

1.2 Fields

Lucene支持多字段数据,当你在查询的时候你可以指定一个字段查询,key和value用冒号隔开即可,如:

MODULE:FrontNginx AND thumbnail

2. 模糊查询

2.1 Term Modifiers

Lucene支持在Term中使用通配符来支持模糊查询,“?”通配符一个字符,“*”通配多个字符

te?t
test*
te*t

注意:不能将“*”和“?”放在第一个字符来查询。

2.2 Fuzzy Searches

Lucene支持基于编辑距离算法的模糊搜索,可以使用波浪符号“~”放在查询词的后面,比如搜索一个与“ahumbnail”拼写相近的词可以使用:

ahumbnail~

该查询将寻找类似“ahumbnail”和“thumbnail”等的词语,也叫相似度查询。

2.3 Proximity Searches

Lucene支持指定距离查询,可以使用波浪号“~”加数字在查询词后。举例来说搜索“thumbnail”和“quality”距离10个字符以内,你可以使用如下语法

"thumbnail quality"~10

2.4 Range Searches

范围查询允许指定某个字段最大值和最小值,查询在二者之间的所有数据。也可以对非字符类型来进行范围查找:

Parsed.status:[400 TO 499]
Parsed.bucket:{mail-online TO nail-online}

注意:范围查找在Kibana中查找的结果并不准确。

3. 优先级

Lucene支持给不同的查询词设置不同的权重。设置权重使用“^”符号,将“^”放于查询词的尾部,同时跟上权重值,权重因子越大,该词越重要。设置权重允许你通过给不同的查询词设置不同的权重来影响文档的相关性,比如:

jakarta apache 
jakarta^4 apache
"jakarta apache"^4 "jakarta lucene"

在默认情况下,权重因子为1.

4. Term操作符

4.1 Boolean operators

布尔操作符可以将多个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"

4.2 Grouping

Lucene支持使用圆括号来将查询表达式分组,这将在控制布尔控制查询中非常有用。

(Parsed.status:200 Parsed.status:206) AND "mail-online"

这种语法对消除歧义,确保查询表达式的正确性具有很大的意义。

4.3 Field Grouping

Lucene支持对字段用圆括号来进行分组,当我们要查询status中含有“200”和“206”时,我们可以使用如下语法:

Parsed.status:(+200 OR 206)

4.4 Escaping Special Characters

Lucene支持转义查询中的特殊字符,以下是Lucene的特殊字符清单:

+ - && || ! ( ) { } [ ] ^ " ~ * ? : \

转义特殊字符我们可以使用符号“\”放于字符之前。

ref

Lucene查询语法

你可能感兴趣的:(大数据,系统运维,ELK)