Ich habe Daten wie folgend:Elasticsearch Aggregation über Top Hits
{"action":"CREATE","docs":1,"date":"2016 Jun 26 12:00:12","userid":"1234"}
{"action":"REPLACE","docs":2,"date":"2016 Jun 27 12:00:12","userid":"1234"}
{"action":"REPLACE","docs":1,"date":"2016 Jun 27 13:00:12","userid":"1234"}
{"action":"CREATE","docs":1,"date":"2016 Jun 28 12:00:12","userid":"3431"}
{"action":"REPLACE","docs":2,"date":"2016 Jun 28 13:00:12","userid":"3431"}
{"action":"CREATE","docs":1,"date":"2016 Jun 29 12:00:12","userid":"9999"}
Um Datensätze für jeden einzelnen Nutzer nach Datum geordnet zu erhalten (absteigend), habe ich oben wie unten Hits:
"aggs": {
"user_bucket": {
"terms": {
"field": "userid"
},
"aggs": {
"user_latest_count": {
"top_hits": {
"size": 1,
"sort": [
{
"data": {
"order": "desc"
}
}
],
"_source": {
"include": [
"docs"
]
}
}
}
}
}
}
das Ergebnis der obigen Abfrage ist wie folgt:
{"action":"REPLACE","docs":1,"date":"2016 Jun 27 13:00:12","userid":"1234"}
{"action":"REPLACE","docs":2,"date":"2016 Jun 28 13:00:12","userid":"3431"}
{"action":"CREATE","docs":1,"date":"2016 Jun 29 12:00:12","userid":"9999"}
Jetzt möchte ich dies weiter aggregieren, so dass das Ergebnis wie folgend:
{"sum_of_different_buckets": 4}
aber nicht sicher, wie man SUM das Feld „docs“ Wert aus dem Ergebnis oben erhalten.
Ich verstehe nicht, was Sie erreichen möchten. Summieren, welche Werte? Und wie sollte das Ergebnis aussehen? –
Ich habe die Frage bearbeitet, bitte überprüfen Sie jetzt. Im Grunde brauche ich eine weitere Ebene der Aggregation über die Top Hits-Aggregation hinaus, so dass ich die Summe von Feld "Docs" habe. – SuperCoder
Ich glaube nicht, dass das möglich ist, weil Sie die Ausgabe von top_hits verwenden möchten und diese Aggregation danach nicht in anderen Aggregationen verwendet werden kann. Können Sie nicht einfach die Summe in Ihrem eigenen Code/Ihrer eigenen Anwendung eingeben? –