反向嵌套聚合

您可以将来自嵌套文档的值聚合到其父文档;这种聚合称为 reverse_nested。 您可以使用 reverse_nested 在按嵌套对象的字段分组后,聚合父文档中的字段。reverse_nested 聚合”连接回”根页面,并为每个变体获取其 load_time

reverse_nested 聚合是嵌套聚合内的一个子聚合。它接受一个名为 path 的选项。此选项定义了 UDB-SX 在文档层次结构中向后回溯多少步来计算聚合。

GET logs/_search
{
  "query": {
    "match": { "response": "200" }
  },
  "aggs": {
    "pages": {
      "nested": {
        "path": "pages"
      },
      "aggs": {
        "top_pages_per_load_time": {
          "terms": {
            "field": "pages.load_time"
          },
          "aggs": {
            "comment_to_logs": {
              "reverse_nested": {},
              "aggs": {
                "min_load_time": {
                  "min": {
                    "field": "pages.load_time"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

示例响应

...
"aggregations" : {
  "pages" : {
    "doc_count" : 2,
    "top_pages_per_load_time" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 0,
      "buckets" : [
        {
          "key" : 200.0,
          "doc_count" : 1,
          "comment_to_logs" : {
            "doc_count" : 1,
            "min_load_time" : {
              "value" : null
            }
          }
        },
        {
          "key" : 500.0,
          "doc_count" : 1,
          "comment_to_logs" : {
            "doc_count" : 1,
            "min_load_time" : {
              "value" : null
            }
          }
        }
      ]
    }
  }
 }
}

响应显示 logs 索引中有一个页面的 load_time 为 200,另一个页面的 load_time 为 500。