Elasticsearch Kibana 基本查询语法
elasticsearch
的基本概念这里不做介绍,需要了解的自行百科。
这里主要记录一些日常利用Kibana
查询es日志的语句,供大家参考。
Kibana
是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作。
手册导航:
https://www.elastic.co/guide/cn/elasticsearch/guide/current/foreword_id.html
https://www.elastic.co/guide/cn/kibana/current/introduction.html
格式说明:
[`请求方式`] [`索引`] / [`type`] / [`查询关键词`]
{
"query": {
// 查询体
}
}
控制台Dev Tools
下 console
记录:
-
匹配所有日志
关键词:match_all
GET nginx_logs/access/_search { "query": { "match_all": {} } }
-
指定某个字段的值查询
关键词:match
GET nginx_logs/access/_search { "query": { "match": { "path": "/sovellpay/v2/trade" } } }
匹配出路径
path
等于/sovellpay/v2/trade
的日志 -
模糊查询
关键词:wildcard
GET nginx_logs/access/_search { "query": { "wildcard": {"status": "5*"} } }
匹配出状态码
status
以 5 开头的日志 -
指定某个值 同时匹配多个字段
关键词:multi_match
query 要查询的值
fields 要匹配的字段【数组】GET nginx_logs/access/_search { "query": { "multi_match": { "query": "400", "fields": [ "code", "status" ] } } }
匹配出 字段
code
和status
为400
的所有日志 -
一个字段查询多个值
关键词:terms
{ “字段”:[ 要匹配的多个值 ] }GET nginx_logs/access/_search { "query": { "terms": { "status": ["400","402","406"] } } }
-
多种组合查询
关键词:bool must should range size sort
来看一个例子:GET nginx_logs/access/_search { "query": { "bool": { "must": [ { "bool":{ "should":[ {"wildcard": {"status": "5*"}}, {"terms": {"status": ["400","402","406"]}} ] } }, { "range": { "time": {"gte":"2019-03-14 09:00:00","lte":"2019-03-14 15:30:00"} } } ] } }, "size":100, "sort": [ { "time": { "order": "desc" } } ] }
解释:
匹配出 状态值status
满足以5开头 包含400 402 406
,并且日志时间time
在>= 2019-03-14 09:00:00 && <= 2019-03-14 15:30:00
范围内,查询结果按照time
字段desc
倒叙排列。 查询出100条。另外一个例子:
GET nginx_logs/access/_search { "query": { "bool": { "must": [ { "bool": { "should": [ { "wildcard": { "path": "*/order/info" } }, { "wildcard": { "path": "/sovellpay/v2/payment/*" } }, { "terms": { "path": [ "/oauth/v2/token", "/sovellpay/v2/trade" ] } } ] } }, { "range": { "request_time": { "gte": 2 } } }, { "range": { "time": { "gte": "2019-03-14 12:00:00", "lte": "2019-03-14 15:30:00" } } } ] } }, "size": 100, "sort": [ { "time": { "order": "desc" } } ] }
解释:
匹配出日志中path字段包含以下值的所有情况:(*
通配符)/oauth/v2/token /sovellpay/v2/trade */order/info /sovellpay/v2/payment/*
请求时长request_time 大于等于2s 的日志记录(时间和排序那些见上个例子)
希望对大家有所帮助~loading...