我有这样的数据:
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)
}
有没有办法在 Elasticsearch 中实现这一点? 谢谢..
最佳答案
有办法!
首先,您需要在“名称”字段上进行术语聚合,并添加“min_doc_count”:3。 然后是字段“日期”上的子 max_aggregation。
像这样的东西:
"aggs": {
"split_by_name": {
"terms": {
"field": "Name",
"min_doc_count": 3
},
"aggs": {
"max_date": {
"max": {
"field": "Date"
}
}
}
}
}
关于search - Elasticsearch 查询最大值聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45182167/