顶级命中的ElasticSearch聚合

Sup*_*der 7 elasticsearch

我有以下数据:

{"action":"CREATE","docs":1,"date":"2016 Jun 26 12:00:12","userid":"1234"}
{"action":"REPLACE","docs":2,"date":"2016 Jun 27 12:00:12","userid":"1234"}
{"action":"REPLACE","docs":1,"date":"2016 Jun 27 13:00:12","userid":"1234"}
{"action":"CREATE","docs":1,"date":"2016 Jun 28 12:00:12","userid":"3431"}
{"action":"REPLACE","docs":2,"date":"2016 Jun 28 13:00:12","userid":"3431"}
{"action":"CREATE","docs":1,"date":"2016 Jun 29 12:00:12","userid":"9999"}
Run Code Online (Sandbox Code Playgroud)

为了按日期(降序)获取每个唯一用户订单的记录,我使用了如下所示的Top Hits:

"aggs": {
  "user_bucket": {
    "terms": {
      "field": "userid"
    },
    "aggs": {
      "user_latest_count": {
        "top_hits": {
          "size": 1,
          "sort": [
            {
              "data": {
                "order": "desc"
              }
            }
          ],
          "_source": {
            "include": [
              "docs"
            ]
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

以上查询的结果如下:

{"action":"REPLACE","docs":1,"date":"2016 Jun 27 13:00:12","userid":"1234"}
{"action":"REPLACE","docs":2,"date":"2016 Jun 28 13:00:12","userid":"3431"}
{"action":"CREATE","docs":1,"date":"2016 Jun 29 12:00:12","userid":"9999"}
Run Code Online (Sandbox Code Playgroud)

现在,我想进一步聚合这个,结果如下:

{"sum_of_different_buckets": 4}
Run Code Online (Sandbox Code Playgroud)

但不知道如何SUM领域的" 文档从上面获得的结果"值.

小智 0

您还可以在聚合内任意嵌套聚合,以从数据中提取所需的汇总数据。可能是下面的示例作品。

"aggs" : {
    "sum_of_different_buckets" : { "sum" : { "field" : "docs" } }
}
Run Code Online (Sandbox Code Playgroud)