天天看點

Kibana使用之Lucene的文法查詢Kibana使用之Lucene的文法查詢 

轉載位址

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