Ich verwende Kibana 4.4.1 und in Elasticsearch speichere ich den Status des PC, nur wenn PC-Status geändert wird (offen, geschlossen, Warings usw.)Wie aggregiert man Daten in einem Feld in elasticsearch?
Meine Daten in Elasticsearch wie folgt aussieht:
{ "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" }
Und ich, was die neueste Aufzeichnung zu bekommen, um zu jeder Zeit haben, wie viele PCs sind geöffnet, geschlossen oder haben einige Probleme. Meine Frage ist wie:
GET cb-2016.10.26/_search
{
"query": {
"match_all": { }
},
"sort": [
{
"date": {
"order": "desc"
}
}
],
"aggs": {
"max_date":{
"max": {
"field": "date"
}
}
}
}
Und das Ergebnis ist:
"aggregations": {
"max_date": {
"value": 1477417680000,
"value_as_string": "2016-10-25T17:48:00.000Z"
}
}
Aber was ich will ist, dass max_date für jeden "pc" haben: "lpt001", "lpt002".
Gibt es eine Möglichkeit, max_date durch "pc" -Feld zu teilen? Ich habe etwas über Bucket-Aggregationen gelesen, aber ich habe das Ergebnis nicht erreicht.
Danke