2017-07-19 230 views
3

我有这样的数据:弹性搜索查询最大值AGGS

Name  Fees Collected  Date 
Name1  100    2017-05-01T12:00:00 
Name1  200    2017-05-02T12:00:00 
Name2  500    2017-05-05T12:00:00 
Name2  600    2017-05-06T12:00:00 
Name3  1000    2017-05-010T12:00:00 
Name3  1100    2017-05-011T12:00:00 
Name4  1500    2017-05-011T12:00:00 

我如何可以编写一个查询返回的过滤分组,对每个组的2分钟文档数最高日聚集/?

我期待以下的输出:

Name  Fees Collected Date 
Name1  200    2017-05-02T12:00:00 
Name2  600    2017-05-06T12:00:00 
Name3  1100   2017-05-011T12:00:00 

最后,我会得到汇总如下

"aggregations" { 
    "Fees Collected " : "1900" //(200+600+1100) 
    } 

反正是有弹性的搜索来实现这一目标? 谢谢..

回答

1

有一种方法!

首先,您需要在“名称”字段添加“min_doc_count”的术语聚合:3. 然后在字段“日期”上进行子max_aggregation。

财产以后这样的:

"aggs": { 
"split_by_name": { 
    "terms": { 
    "field": "Name", 
    "min_doc_count": 3 
    }, 
    "aggs": { 
    "max_date": { 
     "max": { 
     "field": "Date" 
     } 
     } 
    } 
    } 
}