2017-06-02 31 views
0

インデックスには何千ものドキュメントがありますが、私がしようとしているのは、同じ日付のドキュメントを集計し、その日付の数を表示することです。日付は文字列です。私が欲しいものをより良く理解するために、日付のフィールドはarrivalDateと呼ばれ、各ドキュメントには特定のarrivalDateがあります。私は、データがこのようなものを表示させたい:文字列値に基づいてデータを集計する

20110105:5つのレコードが

20120501:2つのレコードが

20120602:15個の記録

など。これは基本的に弾性検索を使用する以外はGROUP BY SQLクエリのようなものです。弾性検索を使用してそのようなクエリを作成するにはどうすればよいですか?

+0

文字列として日付フィールドを保存しないでください。 Elasticsearchにはいくつかのデータ型があり、 '日付'型がその1つです。
これの利点 - *作成する日付のヒストグラムのように、作成される '日付'タイプのフィールドの多くの共通機能を使用するようになりました。また、日付を比較したり、日付より新しいか古いかのようなフィルタを使用することもできます。 –

答えて

3

必要なものはtermです。それはこのようなものに見えます。

{ 
    "aggs": { 
    "group_bu_date": { 
     "terms": { 
     "field": "arrivalDate" 
     } 
    } 
    } 
} 
+0

このコマンドを実行するとエラーが発生しました。私のエラーが表示されます:フィールドデータは、デフォルトでテキストフィールドで無効になっています。逆インデックスを反転してメモリにフィールドデータをロードするには、[arrivalDate]にfielddata = trueを設定します。ただし、これは大きなメモリを使用する可能性があることに注意してください。 – user2896120

+0

私はそれを修正しました、ありがとう! – user2896120

関連する問題