我有这样的数据:
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)
}
有没有在弹性搜索中实现这一点? 谢谢..
答案 0 :(得分:1)
有办法!
首先,您需要在“名称”字段中添加术语聚合,并添加“min_doc_count”:3。 然后在字段“Date”上的子max_aggregation。
这样的事情:
"aggs": {
"split_by_name": {
"terms": {
"field": "Name",
"min_doc_count": 3
},
"aggs": {
"max_date": {
"max": {
"field": "Date"
}
}
}
}
}