2016-07-05 9 views
5

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.

+0

Ich verstehe nicht, was Sie erreichen möchten. Summieren, welche Werte? Und wie sollte das Ergebnis aussehen? –

+0

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

+0

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

Antwort

0

Sie können Aggregationen auch innerhalb von Aggregationen beliebig verschachteln, um zusammengefasste Daten zu extrahieren, die Sie aus Ihren Daten benötigen. Kann unter Beispielarbeiten sein.

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