2016-07-05 42 views
5

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.

+0

Non capisco cosa si vuole raggiungere. Riassumendo quali valori dei documenti? E come dovrebbe apparire il risultato? –

+0

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

+0

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? –

risposta

0

È inoltre possibile nidificare le aggregazioni all'interno delle aggregazioni in modo arbitrario per estrarre i dati riepilogativi richiesti dai dati. Potrebbe essere al di sotto delle opere di esempio.

"aggs" : { 
    "sum_of_different_buckets" : { "sum" : { "field" : "docs" } } 
}