2016-07-22 58 views
0

我們有一個索引,其中包含每天訪問我們網站的每個訪問事件的一個文檔,其中包含訪問時間和用戶ID,同一用戶可以在同一天訪問多次。我試圖獲得每分鐘第一次訪問的用戶數量。這可能在單個查詢中做到嗎?使用date_histogram或類似方法對top_hits的結果進行彙總?

我知道,按時間字段排序的術語聚合中的top_hits聚合將使我獲得代表每天第一次唯一訪問的文檔。我知道date_histogram會按分鐘彙總訪問次數,但不會應用唯一性檢查。 date_histogram的基數subaggregation只驗證每個桶的唯一性,而不是整天。 date_histogram不接受管道規範的內容。

我目前害怕唯一的答案是做top_hits聚合,然後將它自己聚集在客戶端,或者對每一分鐘做一個單獨的查詢我想驗證獨特的用戶(比如查詢唯一用戶標識符從午夜至上午12:01,然後午夜12:02,等等,跟蹤計數生長的每個查詢。)

+0

做多聚集我考慮過的其他可怕想法 - 做一個terms&top_hits聚合以獲得代表第一次唯一訪問的全套文檔ID,然後執行ID查詢t o只返回這些文件並對此做一個date_histogram ...但這是一個我正在構建的物理上巨大的請求。 –

+0

很難弄清楚這裏的問題是什麼:請將第一個長段拆分成更短的句子,並將問題作爲一個問題來表達。 –

+0

不確定如何將第一個句子拆分爲較短的句子 - 這是我想在一個查詢中執行的一個操作。這樣的查詢是否存在? –

回答

0

您可以在一個單一的elasticsearch查詢它是這樣 { "query": { // some query }, "aggs": { "aggregation1": { }, "aggrgation2": { }, }

+0

雖然這並不能解決問題 - 我不希望每分鐘都有非唯一訪問者或整個一天中的唯一訪問者。我希望每分鐘有獨特的訪問者(相對於當天),只需一組桶。我如何構建這些? –