Kibana 搜索語法
Kibana 支持三種搜索語法, 分別是 Lucene query 語法, 基於 json 的 ES query語法, 以及 Kuery 語法. 前兩種語法可以直接使用, Kuery語法需要先啟用.
Lucene query 語法學習簡單快速, ES query 語法相對復雜, 但更強大, 適合基於ES的程序開發.
這里僅僅關注Lucene query 語法.
參考:
http://www.cnblogs.com/pengzhen/p/6930211.html
http://xiaorui.cc/2015/02/13/在kibana里使用lucene語法進行搜索query搜索/
https://lucene.apache.org/core/2_9_4/queryparsersyntax.html
以Key:Value的形式構建查詢條件,
Key即是域名(Field), Value即是值項(Term)
默認域名可以省略掉, Lucene的默認域是text域, kibana的默認域是message域, message會包含所有日志內容.
title:abc # 在title這個域中搜索 abc, 所有title 包含 abc 都會被搜索出來.
title:"abc def" # 在title這個域中搜索 abc def 這個完整的字符串.
title:abc def # 這個寫法不同於上面的查詢語句, 其實是兩個查詢條件, 在title域中搜索abc, 並且在默認域中搜索def.
title:"1=1" # 如果term有空格或等於號等特殊字符, 需要用雙引號括起來.
對於數值項可以使用>、<、=操作符
account_number:<100
多個查詢項的組合, 使用大寫的 AND 、 OR 、NOT實現與或非.
title:"The Right Way" AND text:go
account_number:<100 AND balance:>47500
支持通配符
Kibana 一般不需要使用通配符, 因為 Kibana 的 key:value 查詢條件, 只要域值包含 value 就能被搜索出來, 除非我們的值項有多個特征, 可以用通配符將多個特征連起來.
? 號可以匹配任意一個字符
* 號可以匹配任意多個字符
但通配符可以放在term的中間或尾部, 不能放在term的最前面.
支持正則
ES 中正則性能很差,而且支持的功能也不是特別強大,盡量不要使用, 正則表達式需要用//括起來.
message:/[mb]oat/ # 匹配 moat 或者 boat
范圍限定
方括號代表包含邊界值, 花括號代表不包含邊界值
mod_date:[20020101 TO 20030101]
title:{Aida TO Carmen}