2014-07-24 26 views
1

我知道Elasticsearch支持具有分段的子聚合(其中分段聚合可以具有分段或度量子聚合)。使用度量标准聚合不可能进行子聚合。可能是有道理的,但这里是用例。使用ElasticSearch的多个度量子聚合情况

我有term aggregation作为父母。并使用另一个term汇总作为它的一个孩子。子女termtop_hits类型的子女聚合。 top_hits是度量聚合,因此它不能进行任何子聚合。现在需要包含avg聚合。鉴于top_hits是聚合树中的最后一个聚合,因为top_hits是度量聚合,所以它不能具有avg作为子节点。

以下是所需的聚合级别。 (当然它给top_hitsavg聚集太度量聚集和真实是无效的。

{ 
    "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" 
      } 
     } 
     } 
    } 
    } 
} 

有什么解决方法或解决这一最好的方法是什么?

回答

1

我认为这会工作,验证..

{ 
    "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个或多个sibblings(分聚合)为母体聚合。

+1

''可以有1个或多个sibblings(子AGG对于父母聚合“)真的吗?我得到'解析失败[在[top_models]:[terms]和[avg_length]]]中找到两个聚合类型定义' –