Mam dane w następujący sposób:ElasticSearch Agregacja nad hity
{"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"}
Aby uzyskać dokumentację do konkretnego celu użytkownika według daty (malejąco) użyłem Top Hits jak poniżej:
"aggs": {
"user_bucket": {
"terms": {
"field": "userid"
},
"aggs": {
"user_latest_count": {
"top_hits": {
"size": 1,
"sort": [
{
"data": {
"order": "desc"
}
}
],
"_source": {
"include": [
"docs"
]
}
}
}
}
}
}
wynikiem powyższego zapytania jest następująca:
{"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"}
teraz chcę do agregowania to dalej tak, że wynik jest w następujący sposób:
{"sum_of_different_buckets": 4}
Ale nie wiem, jak SUM pole „docs” wartość od wyniku uzyskanego powyżej.
Nie rozumiem, co chcesz osiągnąć. Podsumowując, która docenia wartości? Jak powinien wyglądać wynik? –
Edytowałem pytanie, sprawdź teraz. Zasadniczo potrzebuję jeszcze jednego poziomu agregacji poza agregacją Top Hits, dzięki czemu mam sumę pól "docs". – SuperCoder
Nie sądzę, że jest to możliwe, ponieważ chcesz używać danych wyjściowych top_hits, a ta agregacja nie może być później użyta w innych agregacjach. Nie możesz po prostu zrobić sumy we własnym kodzie/aplikacji? –