2

我知道 Elasticsearch 支持带有分桶的子聚合(其中分桶聚合可以有分桶或度量子聚合)。度量聚合不能进行子聚合。可能这是有道理的,但这是用例。

我有术语聚合作为父母。并使用另一个term聚合作为它的子级。childterm有一个类型为的子聚合top_hitstop_hits是一个度量聚合,因此它不能采用任何子聚合。现在需要avg在组合中加入聚合。Given是聚合树中的最后一个聚合,因为它是一个度量聚合,所以它top_hits不能avg作为它的子级。top_hits

以下是所需的聚合级别。(当然它是无效的,因为它top_hits是一个度量聚合并且对于avg聚合也是如此。

{
  "aggregations": {
    "top_makes": {
      "terms": {
        "field": "make"
      },
      "aggregations": {
        "top_models": {
          "terms": {
            "field": "model"
          },
          "aggregations": {
            "top_res": {
              "top_hits": {
                "_source": {
                  "include": [
                    "model",
                    "color"
                  ]
                },
                "size": 10
              }
            }
          }
        }
      },
      "aggregations": {
        "avg_length": {
          "avg": {
            "field": "vlength"
          }
        }
      }
    }
  }
}

解决此问题的解决方法或最佳方法是什么?

4

1 回答 1

2

我认为这会起作用,验证..

{
  "aggregations": {
    "top_makes": {
      "terms": {
        "field": "make"
      },
      "aggregations": {
        "top_models": {
          "terms": {
            "field": "model"
          },
          "aggregations": {
            "top_res": {
              "top_hits": {
                "_source": {
                  "include": [
                    "model",
                    "color"
                  ]
                },
                "size": 10
              }
            }
          },
          "avg_length": {
            "avg": {
              "field": "vlength"
            }
          }
        }
      }
    }
  }
}

关键是您可以为父聚合拥有 1 个或多个兄弟姐妹(子聚合)。

于 2014-07-25T09:28:39.680 回答