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/