【问题标题】:To get hits inside aggregations,in elasticsearch要在聚合中获得命中,在弹性搜索中
【发布时间】:2015-05-23 13:49:27
【问题描述】:

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

{
    "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 中实现这一点?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      据我了解,您想要获取所有文档并将该文档用于aggregations,因此您应该使用匹配查询和聚合,如下所示:

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

      以上返回默认10hit array中的文档,使用sizesize=BIGNUMBER可以获得10多个项目。 (其中 BIGNUMBER 等于您认为大于数据集的数字)。但是你应该使用scan and scroll 而不是size

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        • 1970-01-01
        • 1970-01-01
        • 2020-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多