我有这样的文件:
{
body: 'some text',
read_date: '2017-12-22T10:19:40.223000'
}
有没有办法按日期查询过去10天内发布的文件数?例如:
2017-12-22, 150
2017-12-21, 79
2017-12-20, 111
2017-12-19, 27
2017-12-18, 100
答案 0 :(得分:2)
是的,你可以使用date_histogram
聚合轻松实现这一点,如下所示:
{
"query": {
"range": {
"read_date": {
"gte": "now-10d"
}
}
},
"aggs": {
"byday": {
"date_histogram": {
"field": "read_date",
"interval": "day"
}
}
}
}
答案 1 :(得分:1)
要接收过去10天的天数,您可以每天发布以下查询:
{
"query": {
"range": {
"read_date": {
"gte": "now-11d/d",
"lte": "now-1d/d"
}
}
},
"aggs" : {
"byDay" : {
"date_histogram" : {
"field" : "read_date",
"calendar_interval" : "1d",
"format" : "yyyy-MM-dd"
}
}
}
}
到以下网址:http:// localhost:9200 / Index_Name / Index_Type / _search?size = 0
将大小设置为0可以避免执行搜索的提取阶段,从而使请求更有效。有关更多信息,请参见this elastic documentation。