2016-07-22 9 views
0

私たちのサイトへの訪問イベントごとに1つのドキュメントを含む索引があります。このドキュメントには訪問日時とユーザーIDが含まれ、同じユーザーが同じ日に複数回訪問することができます。私は毎日その日に初めて訪問したユーザーの数を取得しようとしています。これは1つのクエリで可能ですか?top_hitsとdate_histogramなどの結果を集計しますか?

期間集計のtop_hits集計を時間フィールドでソートすると、毎日の最初のユニークな訪問を表すドキュメントが表示されることはわかっています。 date_histogramは訪問回数を分単位で集計しますが、一意性チェックは適用しません。 date_histogramのカーディナリティー副集合は、1日中ではなく、バケットごとの一意性のみを検証します。 date_histogramは、何を集計するかのパイプライン仕様を受け入れません。

唯一の答えは、top_hits集計を行い、それをクライアントサイドで集計することです。または、一意のユーザーを確認したい毎分の個別のクエリを実行することです(一意のユーザーID深夜から午前12:01、12:02に、その後、深夜など、各クエリでのカウントでの成長を追跡する。)

+0

ようになり、単一のelasticsearchクエリで複数の集計を行うことができます私が考えている他の恐ろしいアイデア - 最初の一意の訪問を表す完全なドキュメントIDのセットを得るために用語&top_hits集計を行い、次にidクエリを実行するt oそれらのドキュメントを返すだけで、それについてdate_histogramを実行しています...しかし、それは私が構築しようとしている物理的に巨大な要求です。 –

+0

最初に長い段落を短い文章に分割し、質問として質問してください。 –

+0

最初の文を短い文に分割する方法はわかりません。これは1つのクエリで実行したい1つのアクションです。そのようなクエリは存在しますか? –

答えて

0

あなたはそれが { "query": { // some query }, "aggs": { "aggregation1": { }, "aggrgation2": { }, }

+0

それはそれを解決しません - 私は1分ごとにユニークでない訪問者または一日を通してユニークなものを望んでいません。ユニークな訪問者(1日あたりの相対的な訪問者)が1分あたり、1セットのバケツが必要です。それらをどのように構築するのですか? –

関連する問題