2016-09-26 20 views
1

データを集計し、その集約キーは数値です。私はキーによる集計の結果をソートしようとしました。 elasticsearchキーを文字列として処理しました。Elasticsearch - 集計キーのソートを数値として取得

現在の結果バケットの数がかなり多いので、クライアント側で変更することはできません。これのアイデア?

ここは私の質問です。

"aggregations" : { 
       "startcount" : { 
        "terms" : { 
         "script" : "round(doc['startat'].value/1000)", 
         "size" : 1000, 
         "order" : { "_term" : "asc" } 
        } 
       } 
      } 

と現在の結果バケット。

"buckets": [ 
     { 
      "key": "0", 
      "doc_count": 68 
     }, 
     { 
      "key": "1", 
      "doc_count": 21 
     }, 
     { 
      "key": "10", 
      "doc_count": 6 
     }, 
     { 
      "key": "11", 
      "doc_count": 16 
     }, 

私の期待している結果です。

例:value_scriptアプローチを使用して

"buckets": [ 
    { 
     "key": "0", 
     "doc_count": 68 
    }, 
    { 
     "key": "1", 
     "doc_count": 21 
    }, 
    { 
     "key": "2", // not '10' 
     "doc_count": 6 
    }, 
    { 
     "key": "3", // not '11' 
     "doc_count": 16 
    }, 
+0

を、 'startat'フィールドには、どのような種類がありますか? – Val

+0

タイプは 'date'で、フォーマットは 'strict_date_optional_time || epoch_millis'です。 –

+0

私はdate_histogramを使うことをお勧めします。別の視点を与えてくれてありがとう。 –

答えて

3

はアルファベット順のソートの問題修正する必要があり、あなたのマッピングで

{ 
    "size": 0, 
    "aggregations": { 
     "startcount": { 
     "terms": { 
      "field": "startat", 
      "script": "round(_value/1000)", 
      "size": 1000, 
      "order": { 
       "_term": "asc" 
      } 
     } 
     } 
    } 
} 
+0

は私のために働く。ありがとう:) –

+0

うれしそうに助けて! – keety

関連する問題