我正在使用6.0.0版弹性搜索 对于按月分组,我正在使用日期直方图聚合。 我尝试过的示例:
{
"from":0,
"size":2000,
"_source":{
"includes":[
"cost",
"date"
],
"excludes":[
],
"aggregations":{
"date_hist_agg":{
"date_histogram":{
"field":"date",
"interval":"month",
"format":"M",
"order":{
"_key":"asc"
},
"min_doc_count":1
},
"aggregations":{
"cost":{
"sum":{
"field":"cost"
}
}
}
}
}
}
}
因此我多次获得1(一月/一月)。 由于我有2016年1月,2017年1月和2018年1月的数据,因此将返回1月份的3次。但是我只想要一月一次,其中包含一月的所有年份的总和。
答案 0 :(得分:3)
您可以将date_histogram
聚合与从日期中提取月份的脚本一起使用,而不是使用terms
聚合。
{
"from": 0,
"size": 2000,
"_source": {"includes": ["cost","date"],"excludes"[]},
"aggregations": {
"date_hist_agg": {
"terms": {
"script": "doc['date'].date.monthOfYear",
"order": {
"_key": "asc"
},
"min_doc_count": 1
},
"aggregations": {
"cost": {
"sum": {
"field": "cost"
}
}
}
}
}
}
请注意,使用脚本并不是最佳选择,如果您知道需要月份信息,则只需使用该信息创建另一个字段,这样就可以在其上使用简单的术语汇总,而不必使用脚本。