Elasticsearch中的总和查询

我是Elasticsearch的新手。我正在尝试编写一个查询,该查询将按字段分组并计算总和。在SQL中,我的查询如下所示: SELECT lane,

SUM(routes) FROM lanes GROUP BY lane

我有在ES中看起来像这样的数据:

{

"_index": "kpi",

"_type": "mroutes_by_lane",

"_id": "TUeWFEhnS9q1Ukb2QdZABg",

"_score": 1.0,

"_source": {

"warehouse_id": 107,

"date": "2013-04-08",

"lane": "M05",

"routes": 4047

}

},

{

"_index": "kpi",

"_type": "mroutes_by_lane",

"_id": "owVmGW9GT562_2Alfru2DA",

"_score": 1.0,

"_source": {

"warehouse_id": 107,

"date": "2013-04-08",

"lane": "M03",

"routes": 4065

}

},

{

"_index": "kpi",

"_type": "mroutes_by_lane",

"_id": "JY9xNDxqSsajw76oMC2gxA",

"_score": 1.0,

"_source": {

"warehouse_id": 107,

"date": "2013-04-08",

"lane": "M05",

"routes": 3056

}

},

{

"_index": "kpi",

"_type": "mroutes_by_lane",

"_id": "owVmGW9GT345_2Alfru2DB",

"_score": 1.0,

"_source": {

"warehouse_id": 107,

"date": "2013-04-08",

"lane": "M03",

"routes": 5675

}

},

...

我想本质上在ES中运行与SQL中相同的查询,这样我的结果将类似于(当然是json): M05: 7103, M03: 9740

回答:

在elasticsearch中,您可以通过使用术语stats

facet实现此目的:

{

"query" : {

"match_all" : { }

},

"facets" : {

"lane_routes_stats" : {

"terms_stats" : {

"key_field" : "lane",

"value_field" : "routes",

"order": "term"

}

}

}

}

以上是 Elasticsearch中的总和查询 的全部内容, 来源链接: utcz.com/qa/432663.html

回到顶部