2016-05-12 5 views
1

どのようにキーのelasticsearch集計バケットを並べ替えるのですか?私は集計をネストしていて、2番目の集計バケットの結果を並べ替える必要があります。elasticsearchアグリゲーションバケットキーで並べ替え

私が持っているように:

"result": { 
     "doc_count_error_upper_bound": 0, 
     "sum_other_doc_count": 0, 
     "buckets": [ 
      { 
       "key": 20309, 
       "doc_count": 752, 
       "Events": { 
        "doc_count_error_upper_bound": 0, 
        "sum_other_doc_count": 0, 
        "buckets": [ 
        { 
         "key": "impression", 
         "doc_count": 30 
        }, 
        { 
         "key": "page_view", 
         "doc_count": 10 
        }, 
        ... 
        ] 
       } 
      }, 
      { 
       "key": 20771, 
       "doc_count": 46, 
       "Events": { 
        "doc_count_error_upper_bound": 0, 
        "sum_other_doc_count": 0, 
        "buckets": [ 
        { 
         "key": "impression", 
         "doc_count": 32 
        }, 
        { 
         "key": "page_view", 
         "doc_count": 9 
        }, 
        ... 
        ] 
       } 
      }, 

は、私は私のEvents集計バケットは、キーimpression上またはpage_viewにDESC/ASCでソートしたいです。 このような結果セットはどのように達成できますか?ここで

は私のクエリ

GET someindex/useractivity/_search?search_type=count 
{ 
    "size": 1000000, 
    "query": { 
    "filtered": { 
     "filter": { 
     "bool": { 
      "must": [ 
      { 
       "range": { 
       "created_on": { 
        "from": "2015-01-12", 
        "to": "2016-05-12" 
       } 
       } 
      }, 
      { 
       "term": { 
       "group_id": 1 
       } 
      } 
      ] 
     } 
     } 
    } 
    }, 
    "aggs": { 
    "result": { 
     "terms": { 
     "field": "entity_id", 
     "size": 1000000 
     }, 
     "aggs": { 
     "Events": { 
      "terms": { 
      "field": "event_type", 
      "min_doc_count": 0, 
      "size": 10 
      } 
     } 
     } 
    } 
    } 
} 

である私は、_keyを使用して試してみましたが、それはバケツの中に並べ替えます。私はすべてのバケツを見て分けたいキーのようにimpression。バケツの結果をこのキーでソートしたい。バケット内にはありません。私は私の結果は、私が降順でimpressionでソートしたい場合は、その後の私の結果は、最大の印象を持つバケットすなわち

"buckets": [ 
       { 
        "key": 20771, 
        "doc_count": 46, 
        "Events": { 
         "doc_count_error_upper_bound": 0, 
         "sum_other_doc_count": 0, 
         "buckets": [ 
         { 
          "key": "impression", 
          "doc_count": 32 
         }, 
         { 
          "key": "page_view", 
          "doc_count": 9 
         }, 
         ... 
         ] 
        } 
       }, 
       {      
        "key": 20309, 
        "doc_count": 752, 
        "Events": { 
         "doc_count_error_upper_bound": 0, 
         "sum_other_doc_count": 0, 
         "buckets": [ 
         { 
          "key": "impression", 
          "doc_count": 30 
         }, 
         { 
          "key": "page_view", 
          "doc_count": 10 
         }, 
         ... 
         ] 
        } 
       }, 

でなければなりませんように設定したい

が一番上にする必要があります。 (降順で印象によるオーダーバケット)

+0

あなたが実行しているクエリを共有してください。 – Richa

+1

「注文」を使用すると:{ "_key": "asc" }または何か不足していますか? –

+0

'_key'を使用すると、バケット内でソートされます。私はすべてのバケットでそれを並べ替えると思います。私のように重要な「印象」があります。バケツの結果をこのキーでソートしたい。バケット内にはありません – yakhtarali

答えて

0

は、この凝集を試してみてください:

{ 
    "size": 0, 
    "aggs": { 
    "result": { 
     "terms": { 
     "field": "entity_id", 
     "size": 10, 
     "order": { 
      "impression_Events": "desc" 
     } 
     }, 
     "aggs": { 
     "Events": { 
      "terms": { 
      "field": "event_type", 
      "min_doc_count": 0, 
      "size": 10 
      } 
     }, 
     "impression_Events": { 
      "filter": { 
      "term": { 
       "event_type": "impression" 
      } 
      } 
     } 
     } 
    } 
    } 
} 
+0

私はこれを試しましたが、必要に応じて動作しません。私が間違っていないなら、あなたは@elasticから来ていることに気づいた。どのように私はそのような結果セットを達成することができますか? – yakhtarali

+0

あなたはそれがあなたが期待していないものを説明できますか? –

+0

私は自分の質問を更新し、希望の結果が何であるかを示しました – yakhtarali

関連する問題