我正在使用kibana 4.4.1,并且在elasticsearch中,仅当PC状态更改(打开,关闭,警告等)时,我才存储PC的状态
我进入Elasticsearch的数据如下:
{ "status_id":1 , "pc":"lpt001" , "date":"2016-10-25T17:49:00Z" }
{ "status_id":3 , "pc":"lpt001" , "date":"2016-10-25T15:48:00Z" }
{ "status_id":4 , "pc":"lpt002" , "date":"2016-10-25T15:46:00Z" }
{ "status_id":1 , "pc":"lpt002" , "date":"2016-10-25T12:48:00Z" }
我要获得最新记录,以便随时拥有多少台PC被打开,关闭或出现问题。
我的查询就像:
GET cb-2016.10.26/_search
{
"query": {
"match_all": { }
},
"sort": [
{
"date": {
"order": "desc"
}
}
],
"aggs": {
"max_date":{
"max": {
"field": "date"
}
}
}
}
结果是:
"aggregations": {
"max_date": {
"value": 1477417680000,
"value_as_string": "2016-10-25T17:48:00.000Z"
}
}
但是我想要的是每个“pc”的max_date:“lpt001”,“lpt002”。
有什么方法可以通过“pc”字段分割max_date?我阅读了一些有关存储桶聚合的信息,但未达到结果。
谢谢
最佳答案
是的,您可以使用terms
字段的pc
聚合来做到这一点,然后将max_date
移到terms
一个的子聚合中:
POST cb-2016.10.26/_search
{
"query": {
"match_all": { }
},
"sort": [
{
"date": {
"order": "desc"
}
}
],
"aggs": {
"pcs": {
"terms": {
"field": "pc"
},
"aggs": {
"max_date":{
"max": {
"field": "date"
}
}
}
}
}
}
关于elasticsearch - 如何在Elasticsearch中按字段汇总数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40306894/