2016-08-16 80 views
0

我有以下结构的文件:计算过elasticsearch的结果汇总

{ 
"ga:bounces": "1", 
"timestamp": "20160811", 
"viewId": "125287857", 
"ga:percentNewSessions": "100.0", 
"ga:bounceRate": "100.0", 
"ga:avgSessionDuration": "0.0", 
"ga:sessions": "1", 
"user": "xxcgf", 
"ga:pageviewsPerSession": "1.0", 
"webPropertyId": "UA-80489737-1", 
"ga:pageviews": "1", 
"dimension": "date", 
"ga:users": "1", 
"accountId": "80489737" 
} 

我申请使用该查询的两个集合:

{ 
    "size": 0, 
    "aggs": { 
    "total-new-sessions": { 
     "sum": { 
     "script": "doc['percentNewSessions'].value/100*doc['sessions'].value" 
     } 
    }, 
    "total-sessions": { 
     "sum": { 
     "field": "ga:sessions" 
     } 
    } 
    } 
} 

,这是我收到这是输出中正是我想要的:

{ 
    "took": 4, 
    "timed_out": false, 
    "_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
}, 
"hits": { 
"total": 32, 
"max_score": 0, 
"hits": [ ] 
}, 
"aggregations": { 
"total-new-sessions": { 
"value": 386.0000003814697 
}, 
"total-sessions": { 
"value": 516 
    } 
} 

}

现在我想要的是由于某种原因将两个聚合的输出分在一起。我应该怎么做,在上述查询最后的输出是唯一一个我想要的。

UPDATE: 我尝试使用此查询:

{ 
    "size": 0, 
    "aggs": { 
    "total-new-sessions": { 
     "sum": { 
     "script": "doc['ga:percentNewSessions'].value/100*doc['ga:sessions'].value" 
     } 
    }, 
    "total-sessions": { 
     "sum": { 
     "field": "ga:sessions" 
     } 
    }, 
    "sessions": { 
     "bucket_script": { 
     "buckets_path": { 
      "total_new": "total-new-sessions", 
      "total": "total-sessions" 
     }, 
     "script": "total_new/total" 
     } 
    } 
    } 
} 

但收到此错误:"reason": "Invalid pipeline aggregation named [sessions] of type [bucket_script]. Only sibling pipeline aggregations are allowed at the top level"

回答

2

可以使用bucket_script aggregation来实现这一目标:

{ 
    "size": 0, 
    "aggs": { 
    "all": { 
     "date_histogram": { 
     "field": "timestamp", 
     "interval": "year" 
     }, 
     "aggs": { 
     "total-new-sessions": { 
      "sum": { 
      "script": "doc['percentNewSessions'].value/100*doc['sessions'].value" 
      } 
     }, 
     "total-sessions": { 
      "sum": { 
      "field": "ga:sessions" 
      } 
     }, 
     "ratio": { 
      "bucket_script": { 
      "buckets_path": { 
       "total_new": "total-new-sessions", 
       "total": "total-sessions" 
      }, 
      "script": "total_new/total" 
      } 
     } 
     } 
    } 
    } 
} 
+0

我想这'{ “size”:0, “aggs”:{ “全新会话”:{ “sum”:{ “script”:“doc ['ga:percentNewSessions'] .value/100 * doc ['ga:sessions']。” } } , “总的会话”:{ “总和”:{ “字段”: “GA:会话” } }, “bucket_script”:{ “buckets_path”:{ “total_new”:“total-新的会话 “ ”总“: ”总的会话“ }, ”脚本“: ”total_new /总* 100“ } } }'但是我得到的错误:' ”理由“:” 莫非找不到聚合器类型[降压[bucket_script]中的[ets_path]' – anekix

+0

您正在运行哪个版本的ES? – Val

+0

我的ES版本是2.2.1 – anekix