elasticsearch对某段时间范围内按时间间隔进行统计
{
"query" : {
"constant_score" : {
"filter" : {
"range" : {
"@timestamp" : {
"gte" : 1490112000000,//或者"gt": "now-2m", "lt": "now"
"lte" : 1490113000000
}
}
}
}
},
"aggs" : {
"by_time" : {
"date_histogram" : {
"field" : "@timestamp",
"interval" : "5s"
}
}
}
}
或者写成类似如下格式
{ "size" : 0, "query":{ "match": { "make": "ford" } }, "aggs":{ "recent_sales": { "filter": { "range": { "sold": { "from": "now-1M" } } }, "aggs": { "average_price":{ "avg": { "field": "price" } } } } } }
按给定时间范围,2个字段联合aggs查询
{ "size" : 0, "query" : { "constant_score" : { "filter" : { "range" : { "@timestamp" : { "gte" : 1490175000000, "lte" : 1490185000000 } } } } }, "aggs" : { "group_by_state" : { "terms" : { "field" : "client_id.keyword" }, "aggs" : { "group_by_code" : { "terms" : { "field" : "message_json.code" } } } } } }
总结:聚合API的调用格式
"aggregations" : { // 表示聚合操作,可以使用aggs替代 "<aggregation_name>" : { // 聚合名,可以是任意的字符串。用做响应的key,便于快速取得正确的响应数据。 "<aggregation_type>" : { // 聚合类别,就是各种类型的聚合,如min等 <aggregation_body> // 聚合体,不同的聚合有不同的body } [,"aggregations" : { [<sub_aggregation>]+ } ]? // 嵌套的子聚合,可以有0或多个 } [,"<aggregation_name_2>" : { ... } ]* // 另外的聚合,可以有0或多个 也可以嵌套query和filter }
相关博客文档:
Logstash+ElasticSearch处理mysql慢查询日志
8.ElasticSearch预警服务-Watcher详解-监控Marvel数据
Filter Bucket https://www.elastic.co/guide/en/elasticsearch/guide/master/_filter_bucket.html