首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个弹性搜索查询叫什么?

这个弹性搜索查询叫什么?
EN

Stack Overflow用户
提问于 2015-04-18 00:55:46
回答 2查看 108关注 0票数 2

我的团队一直在努力找出一个相当有弹性的搜索查询已经有一段时间了。更糟糕的是,我们在互联网上找不到任何答案,我们也不知道我们正在搜索的东西该叫什么。使用案例如下:

给定一个月左右的社交数据,我们希望搜索一些时间跨度来查找来自每个用户的最新交互,然后聚合这些交互的一个值。3/20/15的搜索结果将为当天交互的每个用户名返回且仅返回一个交互。返回的交互的时间戳应该是最接近12AM 3/21/15的时间戳。看起来很简单,不是吗?

我们已经尝试过top_hits聚合,但无法聚合结果。如果需要,我们愿意以支持此查询的格式重新索引数据。任何关于研究或解决这个问题的帮助都将不胜感激。

顺便说一句:对于那些不知道什么是社交数据的人来说…在所有相关社交网站上为用户提供公共社交互动。每个帖子都包含一些内容、时间戳和作者。

EN

回答 2

Stack Overflow用户

发布于 2015-04-18 03:20:04

听起来您需要一个日期直方图聚合See Date Histogram Docs

然后,您可以在日期直方图聚合上应用过滤器,以便根据需要过滤聚合返回的文档,请记住您应用过滤器的顺序。

希望这能对你有所帮助

票数 0
EN

Stack Overflow用户

发布于 2015-04-18 12:35:03

让我们假设我们有如下文档:

代码语言:javascript
复制
{
  "user": "qbox",
  "timestamp": "2015-01-01 01:01:01"
}

在映射中,您需要将时间戳标记为date类型。现在,下面的查询应该会为您运行一些东西-

代码语言:javascript
复制
{
  "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"
          }
        }
      }
    }
  }
}

在这里,您首先在查询中过滤一天的数据。现在,对于每个用户,您将找到最大日期值。该值将是该用户当天的最后一次交互。这个值将是纪元,您需要格式化时间戳值以使其有意义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29705210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档