Elasticsearch aggs terms日期类型字段,如何按日期部分聚合

笑天居士 2015-11-25 12:06:51
{
"size": 0,
"aggs" : {
"genders" : {
"terms" : { "field" : "CreateTime"}
}
}
}

这里的CreateTime是一个date类型的字段,象这样子聚合的结果,就是每个CreateTime long值一个结果


"buckets": [
{
"key": 1446724121000,
"key_as_string": "2015/11/05 11:48:41",
"doc_count": 1
},
{
"key": 1446810521000,
"key_as_string": "2015/11/06 11:48:41",
"doc_count": 1
}
]



那我想让它按这个日期的yyyy,yyyymm,yyyymmdd来做聚合该怎样做呢?
如何能取到CreateTime字段的yyyymmdd值,还是一定要在原记录中增加yyyymmdd字段才行吗?
...全文
2732 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
小强签名设计 2018-11-06
  • 打赏
  • 举报
回复 1
aggs" : {
"all_interests" : {
"terms" : {
"script" : "String he=new SimpleDateFormat('HH').format(new Date(doc['timeHour'].value)); if(he.equals('01')){return he;}else{return null;}",
"order" : { "_term" : "desc" }
}
}
}
这种方法可返回n天范围内某一小时内而不返回其他小时的统计结果
Zachary1994 2016-07-14
  • 打赏
  • 举报
回复
建议采用date histogram聚合,格式如下: "aggs" : { "articles_over_time" : { "date_histogram" : { "field" : "CreateTime", "format": "MM-dd", "interval" : "day" } } 其中interval设置日期间隔,format设置日期格式,具体可以参考官方文档: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-datehistogram-aggregation.html

20,808

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧