速查
全文搜索
在搜索欄輸入login,會返回所有字段值中包含login的文檔
使用雙引號包起來作為一個短語搜索
"like Gecko"
也可以按頁面左側顯示的字段搜索
限定字段全文搜索:field:value
精確搜索:關鍵字加上雙引號 filed:“value”
http.code:404 搜索http狀態碼為404的文檔
字段本身是否存在
exists:http:返回結果中需要有http字段
missing:http:不能含有http字段
通配符
? 匹配單個字符
匹配0到多個字符
kiba?a, el*search
? * 不能用作第一個字符,例如:?text *text
正則
es支持部分正則功能,性能較差
name:/joh?n(ath[oa]n)/
模糊搜索
quikc~ brwn~ foks~
:在一個單詞后面加上啟用模糊搜索,可以搜到一些拼寫錯誤的單詞
first~ 這種也能匹配到 frist
還可以設置編輯距離(整數),指定需要多少相似度
cromm~1 會匹配到 from 和 chrome
默認2,越大越接近搜索的原始值,設置為1基本能搜到80%拼寫錯誤的單詞
近似搜索
在短語后面加上~,可以搜到被隔開或順序不同的單詞
“where select”~5 表示 select 和 where 中間可以隔着5個單詞,可以搜到 select password from users where id=1
范圍搜索
數值/時間/IP/字符串 類型的字段可以對某一范圍進行查詢
length:[100 TO 200]
sip:[“172.24.20.110” TO “172.24.20.140”]
date:{“now-6h” TO “now”}
tag:{b TO e} 搜索b到e中間的字符
count:[10 TO *] * 表示一端不限制范圍
count:[1 TO 5} [ ] 表示端點數值包含在范圍內,{ } 表示端點數值不包含在范圍內,可以混合使用,此語句為1到5,包括1,不包括5
可以簡化成以下寫法:
age:>10
age:<=10
age:(>=10 AND <20)
優先級
quick^2 fox
使用^使一個詞語比另一個搜索優先級更高,默認為1,可以為0~1之間的浮點數,來降低優先級
邏輯操作
AND
OR
+:搜索結果中必須包含此項
-:不能含有此項
+apache -jakarta test aaa bbb:結果中必須存在apache,不能有jakarta,剩余部分盡量都匹配到
分組
(jakarta OR apache) AND jakarta
字段分組
title:(+return +"pink panther") host:(baidu OR qq OR google) AND host:(com OR cn)
轉義特殊字符
= && || > < ! ( ) { } [ ] ^ " ~ * ? : \ /
以上字符當作值搜索的時候需要用\轉義
(1+1)=2用來查詢(1+1)=2
簡單查詢
1、范圍查詢
age:[20 TO 30] age:{20 TO 30}
注:[ ] 表示端點數值包含在范圍內,{ } 表示端點數值不包含在范圍內
2、邏輯操作
AND OR 例子:firstname:H* AND age:20 firstname:H* OR age:20
:搜索結果中必須包含此項
:不能含有此項
例: +firstname:H* -age:20 city:H* firstname字段結果中必須存在H開頭的,不能有年齡是20的,city字段H開頭的可有可無
3、分組
(firstname:H* OR age:20) AND state:KS 先查詢名字H開頭年齡或者是20的結果,然后再與國家是KS的結合
firstname:(+H* -He*) 搜索firstname字段里H開頭的結果,並且排除firstname里He開頭的結果
4、轉義特殊字符
+ - && || ! () {} [] ^" ~ * ? : \
注意:以上字符當作值搜索的時候需要用 \ 轉義
Lucene語法
Kibana查詢語法和Lucene相同,下面是Lucene的查詢語法介紹。
注意:Lucene查詢語法不適合在程序中使用,程序中使用可以調用Lucene-API,API提供了豐富功能來組合定制你所需要的查詢器,查詢語法是為手工輸入高級查詢設計的,而不是為程序拼接語法串而設計的。
簡單說明
Terms
一個查詢將分解為若干Term以及操作符,有兩種Term,其一是單一Term,其二為短語
單一Term是經過分析器分詞后的最小單元,就是一個簡單的單詞,比如:hello、world等
短語是用雙括號括起來的一組詞,例如:”hello world”
多個Term可以通過布爾操作合並在一個更加復雜的查詢器中
Fields
Lucene支持多字段數據,當你在查詢的時候你可以指定一個字段查詢,key和value用冒號隔開即可,如:
MODULE:FrontNginx AND thumbnail
模糊查詢
Term Modifiers
Lucene支持在Term中使用通配符來支持模糊查詢,“?”通配符一個字符,“*”通配多個字符
te?t test* te*t
注意:不能將“*”和“?”放在第一個字符來查詢。
Fuzzy Searches
Lucene支持基於編輯距離算法的模糊搜索,可以使用波浪符號“~”放在查詢詞的后面,比如搜索一個與“ahumbnail”拼寫相近的詞可以使用:
ahumbnail~
該查詢將尋找類似“ahumbnail”和“thumbnail”等的詞語,也叫相似度查詢。
Proximity Searches
Lucene支持指定距離查詢,可以使用波浪號“~”加數字在查詢詞后。舉例來說搜索“thumbnail”和“quality”距離10個字符以內,你可以使用如下語法
"thumbnail quality"~10
Range Searches
范圍查詢允許指定某個字段最大值和最小值,查詢在二者之間的所有數據。也可以對非字符類型來進行范圍查找:
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操作符
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"
Grouping
Lucene支持使用圓括號來將查詢表達式分組,這將在控制布爾控制查詢中非常有用。
(Parsed.status:200 Parsed.status:206) AND "mail-online"
這種語法對消除歧義,確保查詢表達式的正確性具有很大的意義。
Field Grouping
Lucene支持對字段用圓括號來進行分組,當我們要查詢status中含有“200”和“206”時,我們可以使用如下語法:
Parsed.status:(+200 OR 206)
Escaping Special Characters
Lucene支持轉義查詢中的特殊字符,以下是Lucene的特殊字符清單:
+ - && || ! ( ) { } [ ] ^ " ~ * ? : \
轉義特殊字符我們可以使用符號“\”放於字符之前。
轉自
(25條消息) Kibana查詢語法使用手冊_白開水的博客-CSDN博客_kibana查詢語法
https://blog.csdn.net/u013958257/article/details/88567581
1、要搜索一個確切的字符串,即精確搜索,需要使用雙引號引起來:path:”/app/logs/nginx/access.log” 2、如果不帶引號,將會匹配每個單詞:uid token 3、模糊搜索:path:”/app/~ 4、* 匹配0到多個字符:*oken 5、? 匹配單個字符 : tok?n 6、+:搜索結果中必須包含此項 -:不能含有此項 什么都沒有則可有可無: +token -appVersion appCode 7、運算符AND/OR/NOT必須大寫:token AND uid ;token OR uid;NOT uid 8、允許一個字段值在某個區間([] 包含該值,{}不包含):@version:[1 TO 3] 9、組合查詢:(uid OR token) AND version 10、轉義特殊字符 + – && || ! ( ) { } [ ] ^ ” ~ * ? : \ 轉義特殊字符只需在字符前加上符號\ 11、分組(firstname:H* OR age:20) AND state:KS 先查詢名字H開頭年齡或者是20的結果,然后再與國家是KS的結合 12、firstname:(+H* -He*) 搜索firstname字段里H開頭的結果,並且排除firstname里He開頭的結果
查詢語法
全文搜索
單詞
apple pear ,返回所有字段中包含單詞apple或pear的文檔
短語
"apple pear" ,返回所有字段中包含短語"apple pear"的文檔
按字段搜索
一個字段
nickname:apple pear,返回nickname字段包含單詞apple或pear的文檔 nickname:"apple pear",返回username字段包含短語"apple pear"的文檔
多個字段
name:jack AND nickname:"apple pear",返回name字段包含單詞jack 並且 nickname字段包含短語"apple pear"的文檔
通配符搜索
匹配單一字符
nickname:appl? ,返回nickname字段包含單詞(appl+任意一個字符)的文檔
匹配任意多個字符
nickname:app*e,返回nickname字段包含單詞(以app開頭,以e結尾)的文檔
范圍搜索
包括首尾
dt:["2016-06-25" TO "2016-08-25"],返回"2016-06-25"≤ dt ≤"2016-08-25"的文檔
不包括首尾
dt:{"2016-06-25" TO "2016-08-25"},返回"2016-06-25"< dt <"2016-08-25"的文檔
包括首或尾
dt:{"2016-06-25" TO "2016-08-25"],返回"2016-06-25"< dt ≤"2016-08-25"的文檔
布爾搜索
AND
name:"jack ma" AND nickname:"apple pear pear",返回name字段包含"jack ma" 且 nickname字段包含"apple pear pear"的文檔
OR
name:jack OR nickname:apple,返回name字段包含jack或nickname字段包含apple的文檔
NOT
name:jack NOT nickname:"pear pear",返回name字段包含jack,nickname字段不包含"pear pear"的文檔
分組搜索
(name:"jack chen" OR name:lucy ) AND nickname:"apple pear",返回name字段包含"jack chen"或lucy,同時nickname字段包含"apple pear"的文檔 name:("jack chen" NOT lucy ) AND nickname:"apple pear",返回name字段包含"jack chen"不包含lucy,同時nickname字段包含"apple pear"的文檔
轉義特殊字符
{ } + - && || ! ( ) [ ] ^ " ~ * ? : \,用\轉義。能搜索到的內容和選擇的分詞器有關。