Elasticsearch中的多个嵌套聚合

时间:2015-12-15 06:06:57

标签: elasticsearch aggregation

我有多个主机 - >多个网址 - >,我想在网址上进行两次聚合。一个用于响应代码,另一个用于响应时间的百分位数。

我试图做同样的事情,但它抛出异常:

  

找到两个子聚合方法

我的查询:

"aggs" : {
    "host" : {  "terms" : { "field" : "hostname" },
    "aggs":{
    "request": {  "terms":{  "field" : "request" },
    "aggs":{
        "status" : { "terms" : { "field" : "responsecode" }}},
        "aggs":{
           "percen" : { "percentiles" : { "field" : "response_time", "percents" : [50,75,90,95,99] }},
           "avrg" : { "avg" : { "field" : "response_time" } 
}}}}}}

Elastic Search仅支持一次对一个字段进行嵌套聚合吗?

1 个答案:

答案 0 :(得分:0)

您的某个子聚合未正确嵌套在查询中,您需要删除一些大括号(请参阅下文),具体取决于您希望包含percenavrg聚合的位置:

"aggs" : {
    "host" : {  "terms" : { "field" : "hostname" },
    "aggs":{
    "request": {  "terms":{  "field" : "request" },
    "aggs":{
        "status" : { "terms" : { "field" : "responsecode" }}},
                                                           ^^
                                                           ||
                                                remove these two braces

        "aggs":{
           "percen" : { "percentiles" : { "field" : "response_time", "percents" : [50,75,90,95,99] }},
           "avrg" : { "avg" : { "field" : "response_time" } 
}}}}}}