轉(zhuǎn)載地址
Kibana使用之Lucene的語法查詢
Kibana使用的查詢語法是Lucene的查詢語法,這里在使用Kibana的同事一定要注意宿亡,不然谍婉,在進行搜索的時候,你會抓狂的巷蚪。
下面了解下Lucene的查詢語法,了解了Lucene的查詢語法也就知道了改如何使用Kibana的使用方式
Lucene查詢語法以可讀的方式書寫姻氨,然后使用JavaCC進行詞法轉(zhuǎn)換钓辆,轉(zhuǎn)換成機器可識別的查詢。
詞語查詢肴焊,語法如下
"here","there"
"here,there"
字段查詢前联,語法如下
tag:there
tag:"there are"
搜索語句是需要加上雙引號,否則
tag:there are
就意味著娶眷,搜索tag為there似嗤,或者包含are關(guān)鍵字的文檔
修飾符查詢,通過增加修飾届宠,從而擴大查詢的范圍烁落。
通配符一般包括如下
?:匹配單個字符
*:匹配0個或多個字符
語法如下
?tere
意味著搜索there、where等類似的文檔
test*
意味著搜索test豌注、tests伤塌、tester
模糊詞查詢,就是在詞語后面加上符號~轧铁。語法如下
he~
意味著搜索her或hei等詞
也可以在~后面添加模糊系數(shù)每聪,模糊系數(shù)[0-1],越靠近1表示越相近,默認模糊系數(shù)為0.5药薯。語法如下
he~0.8
鄰近詞查詢绑洛,語法如下
"here there"~10
代表搜索包含"here","there"的文檔,這兩個詞中間可以有一部分內(nèi)容(這部分的內(nèi)容通過字符個數(shù)顯示)
能夠匹配到結(jié)果的如下
"here wowo wowo there"
"here,wowow,wowow,there"
范圍查詢童本,可以指定最大值和最小值真屯,會自動查找在這之間的文檔。如果是單詞穷娱,則會按照字典順序搜索绑蔫。
{}尖括號表示不包含最小值和最大值,可以單獨使用
[]方括號表示包含最小值和最大值泵额,可以單獨使用晾匠。如下:
如果搜索成績grade字段小于等于80分,大于60分的
可以寫成下面的方式
grade:{60,80]
如果搜索name在A和C之間的梯刚,可以使用如下的語法
name:{A,C}
詞語相關(guān)度查詢
如果單詞的匹配度很高,一個文檔中或者一個字段中可以匹配多次薪寓,那么可以提升該詞的相關(guān)度亡资。使用符號^提高相關(guān)度。
提高jarkarta的比重
jakarta apache
可以采用下面的語法:
jakarta^4 apache
布爾操作符
支持多種操作符:
AND
AND操作符用于連接兩個搜索條件向叉,僅當兩個搜索條件都滿足時锥腻,才認為匹配。通常用來做交集操作母谎。也可以使用&&替換瘦黑。
注意必須使用大寫。如果不使用AND奇唤,而是and幸斥,可能會被單做關(guān)鍵詞進行搜索!
例如:搜索同時包含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")
轉(zhuǎn)義字符
由于Lucene中支持很多的符號休溶,如
+ - && || ! ( ) { } [ ] ^ " ~ * ? : \
因此如果需要搜索 (1+1):2 需要對改串進行轉(zhuǎn)換代赁,使用字符\。
\(1\+1\)\:2
參考文檔:
http://www.cnblogs.com/xing901022/p/4974977.html
https://segmentfault.com/a/1190000002972420