在弹性搜索中获得聚合内的命中

时间:2015-05-22 05:03:52

标签: elasticsearch

我的数据中有一个日期字段。我对它进行了日期直方图聚合,间隔设置为月份。现在它返回,每月的文件数,间隔。 这是我使用的查询:

{
    "aggs": {
        "dateHistogram": {
            "date_histogram": {
                "field": "currentDate",
                "interval": "day"
            }
        }
    }
}

低于我收到的确切回复。

  {
      "aggregations": {
          "dateHistogram": {
              "buckets": [{
                  "key_as_string": "2015-05-06",
                  "key": 1430870400000,
                  "doc_count": 10
              }, {
                  "key_as_string": "2015-04-06",
                  "key": 1430870500000,
                  "doc_count": 14
              }]
          }
      }
  }

从上面的回复中可以清楚地看到,密钥“1430870400000”下有10个文件,密钥“1430870500000”下有14个文件。但是,尽管文档计数,但未显示单个文档。我希望它们能够显示在响应中,以便我可以从中获取值。我如何在elasticsearch中实现这一目标?

2 个答案:

答案 0 :(得分:1)

这方面的简单方法是使用“top-hits”聚合。你可以找到“top-hits”here

的用法

热门命中聚合将为您提供已完成聚合的相关数据,还有一些选项可指定您要获取的结果,以及您想要获取的数据大小以及排序选项。

答案 1 :(得分:0)

根据我的理解,您希望获取所有文档并将这些文档用于aggregations,因此您应该使用匹配查询和聚合,如下所示:

{
    "query": {
        "bool": {
            "must": [
                {
                    "match_all": {}
                }
            ]
        }
    },
    "aggs": {
        "date_wise_logs_counts": {
            "date_histogram": {
                "field": "currentDate",
                "interval": "day"
            }
        }
    }
}

以上10中的返回默认hit array文档,使用size size=BIGNUMBER获取超过10个项目。 (其中BIGNUMBER等于您认为比您的数据集更大的数字)。但您应该使用scan and scroll代替size