Ho dati come segue:elasticsearch Aggregazione su 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"}
Per ottenere risultati record per ogni ordine utente univoco per data (discendente), ho usato Top Hits come quella qui sotto:
"aggs": {
"user_bucket": {
"terms": {
"field": "userid"
},
"aggs": {
"user_latest_count": {
"top_hits": {
"size": 1,
"sort": [
{
"data": {
"order": "desc"
}
}
],
"_source": {
"include": [
"docs"
]
}
}
}
}
}
}
il risultato di sopra della query è la seguente:
{"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"}
Ora, voglio aggregare questo ulteriore in modo che il risultato sia come segue:
{"sum_of_different_buckets": 4}
ma non è sicuro di come SUM campo "docs" valore dal risultato ottenuto in precedenza.
Non capisco cosa si vuole raggiungere. Riassumendo quali valori dei documenti? E come dovrebbe apparire il risultato? –
Ho modificato la domanda, per favore controlla ora. Fondamentalmente ho bisogno di un ulteriore livello di aggregazione oltre all'aggregazione Top Hits, in modo da avere la somma di "docs" sul campo. – SuperCoder
Non credo sia possibile, perché si desidera utilizzare l'output di top_hits e questa aggregazione non può essere utilizzata successivamente in altre aggregazioni. Non puoi semplicemente fare la somma nel tuo codice/applicazione? –