轉載位址
Kibana使用之Lucene的文法查詢
Kibana使用的查詢文法是Lucene的查詢文法,這裡在使用Kibana的同僚一定要注意,不然,在進行搜尋的時候,你會抓狂的。
下面了解下Lucene的查詢文法,了解了Lucene的查詢文法也就知道了改如何使用Kibana的使用方式
Lucene查詢文法以可讀的方式書寫,然後使用JavaCC進行詞法轉換,轉換成機器可識别的查詢。
詞語查詢,文法如下
"here","there"
"here,there"
字段查詢,文法如下
tag:there
tag:"there are"
搜尋語句是需要加上雙引号,否則
tag:there are
就意味着,搜尋tag為there,或者包含are關鍵字的文檔
修飾符查詢,通過增加修飾,進而擴大查詢的範圍。
通配符一般包括如下
?:比對單個字元
*:比對0個或多個字元
文法如下
?tere
意味着搜尋there、where等類似的文檔
test*
意味着搜尋test、tests、tester
模糊詞查詢,就是在詞語後面加上符号~。文法如下
he~
意味着搜尋her或hei等詞
也可以在~後面添加模糊系數,模糊系數[0-1],越靠近1表示越相近,預設模糊系數為0.5。文法如下
he~0.8
鄰近詞查詢,文法如下
"here there"~10
代表搜尋包含"here","there"的文檔,這兩個詞中間可以有一部分内容(這部分的内容通過字元個數顯示)
能夠比對到結果的如下
"here wowo wowo there"
"here,wowow,wowow,there"
範圍查詢,可以指定最大值和最小值,會自動查找在這之間的文檔。如果是單詞,則會按照字典順序搜尋。
{}尖括号表示不包含最小值和最大值,可以單獨使用
[]方括号表示包含最小值和最大值,可以單獨使用。如下:
如果搜尋成績grade字段小于等于80分,大于60分的
可以寫成下面的方式
grade:{60,80]
如果搜尋name在A和C之間的,可以使用如下的文法
name:{A,C}
詞語相關度查詢
如果單詞的比對度很高,一個文檔中或者一個字段中可以比對多次,那麼可以提升該詞的相關度。使用符号^提高相關度。
提高jarkarta的比重
jakarta apache
可以采用下面的文法:
jakarta^4 apache
布爾操作符
支援多種操作符:
AND
AND操作符用于連接配接兩個搜尋條件,僅當兩個搜尋條件都滿足時,才認為比對。通常用來做交集操作。也可以使用&&替換。
注意必須使用大寫。如果不使用AND,而是and,可能會被單做關鍵詞進行搜尋!
例如:搜尋同時包含a和b的文檔
a AND b
或者
a && b
OR
OR操作符用于連接配接兩個搜尋條件,當其中一個條件滿足時,就認為比對。通常用來做并集操作。也可以使用||替換。注意必須使用大寫。
例如:搜尋包含a或者b的文檔
a OR b
a || b
NOT
NOT操作符排除某個搜尋條件。通常用來做差集操作也可以使用!替換。注意必須大寫。
例如:搜尋包含a,不包含b的文檔
a NOT b
a && !b
在kibana中支援單獨使用,如:排除包含test的文檔
NOT test
+(加号)
包含該操作符後跟着的搜尋條件,如:搜尋包含tom的文檔
+tom
作用和AND的差不多,但是支援單獨使用
-(減号)
排除該操作符後跟着的搜尋條件,如:搜尋不包含tom的文檔
-tom
效果類似NOT
分組
支援使用小括号對每個子句進行分組,形成更為複雜的查詢邏輯。
例如:要搜尋包含a的文檔中,也包含b或者c的
a AND (b OR c)
也支援在字段中使用小括号。如:要搜尋标題中,既包含a也包含b的
title:(+a +"b")
轉義字元
由于Lucene中支援很多的符号,如
+ - && || ! ( ) { } [ ] ^ " ~ * ? : \
是以如果需要搜尋 (1+1):2 需要對改串進行轉換,使用字元\。
\(1\+1\)\:2
參考文檔:
http://www.cnblogs.com/xing901022/p/4974977.html https://segmentfault.com/a/1190000002972420