2016-07-05 6 views
5

ヒッツ:ElasticSearch集約は、私は次のようにデータを持っている

"aggs": { 
      "user_bucket": { 
       "terms": { 
        "field": "userid" 
       }, 
       "aggs": { 
        "user_latest_count": { 
         "top_hits": { 
          "size": 1, 
          "sort": [ 
           { 
            "data": { 
             "order": "desc" 
            } 
           } 
          ], 
          "_source": { 
           "include": [ 
            "docs" 
           ] 
          } 
         } 
        } 
       } 
      } 
     } 

{"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"} 

を日付ごとに一意の各ユーザーの順(降順)のレコードを取得するには、私はトップ下のいずれかのようヒッツ使用しました

は、上記のクエリの結果は以下の通りである:

{"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"} 

を今、私は結果があるように、さらにこれを集約したいです次のように:

{"sum_of_different_buckets": 4} 

でもないように注意してくださいどのようにSUMフィールド上で得られた結果から、「ドキュメント」値。

+0

達成したいことがわかりません。 docsの値を集計しますか?結果はどのように見えるのでしょうか? –

+0

質問を編集しましたので、今すぐ確認してください。基本的には、Top Hits集計以上の集約レベルが1つ必要です。その結果、フィールド「文書」の合計が得られます。 – SuperCoder

+0

これは可能ですが、top_hitsの出力を使用したいので、この集計は他の集計では使用できないため、これは可能ではないと思います。あなた自身のコード/アプリケーションで和を行うことはできませんか? –

答えて

0

集計を任意にネストして、データから要約データを抽出することもできます。サンプル作品の下にあるかもしれません。

"aggs" : { 
    "sum_of_different_buckets" : { "sum" : { "field" : "docs" } } 
} 
関連する問題