我的团队一直在努力找出一个相当有弹性的搜索查询已经有一段时间了。更糟糕的是,我们在互联网上找不到任何答案,我们也不知道我们正在搜索的东西该叫什么。使用案例如下:
给定一个月左右的社交数据,我们希望搜索一些时间跨度来查找来自每个用户的最新交互,然后聚合这些交互的一个值。3/20/15的搜索结果将为当天交互的每个用户名返回且仅返回一个交互。返回的交互的时间戳应该是最接近12AM 3/21/15的时间戳。看起来很简单,不是吗?
我们已经尝试过top_hits聚合,但无法聚合结果。如果需要,我们愿意以支持此查询的格式重新索引数据。任何关于研究或解决这个问题的帮助都将不胜感激。
顺便说一句:对于那些不知道什么是社交数据的人来说…在所有相关社交网站上为用户提供公共社交互动。每个帖子都包含一些内容、时间戳和作者。
发布于 2015-04-18 03:20:04
听起来您需要一个日期直方图聚合See Date Histogram Docs
然后,您可以在日期直方图聚合上应用过滤器,以便根据需要过滤聚合返回的文档,请记住您应用过滤器的顺序。
希望这能对你有所帮助
李
发布于 2015-04-18 12:35:03
让我们假设我们有如下文档:
{
"user": "qbox",
"timestamp": "2015-01-01 01:01:01"
}在映射中,您需要将时间戳标记为date类型。现在,下面的查询应该会为您运行一些东西-
{
"query": {
"range": {
"timestamp": {
"gte": "2015-01-01 00:00:00",
"lt": "2015-01-02 00:00:00"
}
}
},
"aggs": {
"perUser": {
"terms": {
"field": "user"
},
"aggs": {
"maxDate": {
"max": {
"field": "timestamp"
}
}
}
}
}
}在这里,您首先在查询中过滤一天的数据。现在,对于每个用户,您将找到最大日期值。该值将是该用户当天的最后一次交互。这个值将是纪元,您需要格式化时间戳值以使其有意义。
https://stackoverflow.com/questions/29705210
复制相似问题