Kibana自帶了與或非的邏輯語法,還有取值範圍等等。html
AND正則表達式
http_code:502 AND domain:"www.xnow.me"json
以上搜索能夠過濾出來www.xnow.me的返回碼爲502的請求。dom
ORelasticsearch
domain:"www.xnow.me" AND ( http_code:500 OR http_code:502)ide
以上搜索能夠過濾出來www.xnow.me中,返回碼是502或者500的請求。ui
NOTurl
http_code:500 AND NOT domain:"www.xnow.me"spa
以上搜索能夠過濾非www.xnow.me的其它域名,返回碼爲500的請求。日誌
取值範圍
domain:"www.xnow.me" AND http_code:[400 TO 599]
使用以上搜索,能夠看到www.xnow.me上,400到599的全部返回碼,譬如404,503等等。
好比有個字段是響應時間request_time,如何查詢request_time大於0.5的日誌?
price:[0.5 TO *]
注意必須確保該字段爲數值型
能夠參考官方文檔 https://www.elastic.co/guide/en/kibana/3.0/queries.html
grep的牛逼之處正是在於其對正則表達式的支持,掌握了kibana的正則表達式,grep天然就變得無足輕重了。如下使用json格式的字符串進行過濾。如下是我最經常使用的正則的搜索,過濾請求路徑中的內容,能夠很方便的分析出指定url的請求量變化。
{ "regexp": { "request": "/login.*" } }
以上搜索會過濾出路徑起始爲/login的請求。大多數正則引擎都使用^和$來對字符串的起始和結束進行錨點,可是kibana不用,好比在上面的例子中,/login.*
,在其它引擎中能夠表示爲,^/login
,此處的.*也不可忽略。
其它正則語法大多相似,下面簡單描述下:
匹配任何字符
. 點能夠用來匹配任何字符,ab.d能夠匹配到abcd或者ab2d。
匹配重複出現一次或者屢次
+
加號能夠匹配前面出現的字符再出現一次或者好幾回,a+.+c能夠匹配到aabbc或者aaaaaxxxc
*
星號匹配字符出現0次或者屢次。
?
問號匹配字符出現0次或者1次。
限制出現確切的次數
{} 大括號能夠過濾字符出現的確切次數
{3} 表示前一字符出現三次
{2,4} 表示前一字符可出現2,3或者4次。
{2,} 表示前一字符至少重複2次
字符組
用小括號()括起來的字符串能夠認做一個組,例如ababab能夠認爲是(ab)這個組重複了3次,能夠被(ab){3}或者(ab)+等等來匹配。
波浪號
還有一個很神奇的波浪號,ab~d表示,第一個字符是a,第二個字符是b,後面是任意長度的任意字符串但不能是c,最後一個字符是d。因此abcdef能夠使用以下的正則來匹配:
ab~df # 匹配
ab~cf # 匹配
ab~cdef # 不匹配
a~(cb)def # 匹配
a~(bc)def # 不匹配
關於kibana的正則還有不少其它用法,大多數我都沒用到過,因此此處不一一列舉了,感興趣的童鞋能夠參考Elasticsearch的官網的這篇文章Regexp Query,以上部分也大可能是取自這篇文檔。
參考:http://xnow.me/ops/how-to-search-in-elk.html
http://www.ttlsa.com/elk/elk-kibana-query-and-filter/