我有一个关于聚合的问题。我读到有关Date Histogram Aggregation的信息。但是它仅按日期对文档进行排序。所以我有索引访问,字段日期 Visited_pa​​ge 。我想汇总例如每小时的计数(例如,用户每小时的访问页面数)。将使用上面的聚合还是应该以其他方式聚合?

最佳答案

该查询应该如下所示:

GET {index_name}/{type}/_search
{
  "size": 0, // no need to display search result, can boost query speed
  "aggs": {
    "unique_visited_page": {
      "terms": {
        "field": "visited_page" // this must be indexed with keyword type
      },
      "aggs": {
        "visit_page_per_hour" : {
          "date_histogram" : {
              "field" : "date_field",
              "interval" : "hour"
          }
        }
      }
    }
  }
}

我们先按 Visited_pa​​ge 进行汇总,然后每个 Visited_pa​​ge 每小时进行细分,以获取计数。

使用我的样本数据的示例响应
{
  ...
  "hits": {
    "total": 4,
    "max_score": 0,
    "hits": []
  },
  "aggregations": {
    "unique_visited_page": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "contact.html",
          "doc_count": 2,
          "visit_page_per_hour": {
            "buckets": [
              {
                "key_as_string": "2018-07-24T14:00:00.000Z",
                "key": 1532440800000,
                "doc_count": 1
              },
              {
                "key_as_string": "2018-07-24T15:00:00.000Z",
                "key": 1532444400000,
                "doc_count": 1
              }
            ]
          }
        },
        {
          "key": "index.html",
          "doc_count": 1,
          "visit_page_per_hour": {
            "buckets": [
              {
                "key_as_string": "2018-07-24T13:00:00.000Z",
                "key": 1532437200000,
                "doc_count": 1
              }
            ]
          }
        },
        {
          "key": "page.html",
          "doc_count": 1,
          "visit_page_per_hour": {
            "buckets": [
              {
                "key_as_string": "2018-07-24T13:00:00.000Z",
                "key": 1532437200000,
                "doc_count": 1
              }
            ]
          }
        }
      ]
    }
  }
}

结果的关键是我们的 Visited_pa​​ge 值,然后每小时进行汇总并返回 doc_count doc_count 也许是您想要的值。

希望能帮助到你。

关于elasticsearch - 每小时总文件值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51458814/

10-12 14:03