2016-07-22 19 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

虽然这并不能解决问题 - 我不希望每分钟都有非唯一访问者或整个一天中的唯一访问者。我希望每分钟有独特的访问者(相对于当天),只需一组桶。我如何构建这些? –