我是Elasticsearch的新手。我正在尝试编写一个查询,该查询将按字段分组并计算总和。在SQL中,我的查询如下所示: SELECT lane, SUM(routes) FROM lanes GROUP BY lane
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
M05: 7103, M03: 9740
在elasticsearch中,您可以通过使用术语stats facet实现此目的:
{ "query" : { "match_all" : { } }, "facets" : { "lane_routes_stats" : { "terms_stats" : { "key_field" : "lane", "value_field" : "routes", "order": "term" } } } }