我想汇总日期不同的文件的数据,例如仅在星期四从12到18的时间。
我的包含聚合的查询如下:
{
"query": {
"bool": {
"must": [
{
"match": {
"locationid.raw": "HH-44-6"
}
},
{
"match": {
"day.keyword": "THURSDAY"
}
},
{
"range": {
"dataHour": {
"from": "12",
"to": "18",
"include_lower": true,
"include_upper": true
}
}
},
{
"range": {
"dataDate": {
"gte": "2018-11-08 12:00",
"include_lower": true
}
}
}
]
}
},
"aggs" : {
"contacts" : {
"date_histogram" : {
"field" : "dataDate",
"interval" : "hour"
},
"aggs": {
"seeing_data": {
"avg": {
"field": "seeing"
}
}
}
}
}
响应之所以如此之大,是因为它提供了从“ 2018-11-08 18:00”开始日期到现在的每天和每小时的时间间隔内的汇总数据,而不是只有三个可用天(因为从直到现在只有三个星期四(2018-11-08)。
我如何才能实现仅在12-18小时范围内以及从2018-11-08 12:00开始的星期四范围内的数据聚合?
答案 0 :(得分:0)
您可以使用脚本过滤器
"script": {
"script": "doc['@timestamp'].date.dayOfWeek == 2"
}
答案 1 :(得分:0)
按照以下步骤操作,可以一天中的小时汇总您的数据:
因此您的文档中有一个日期字段。您无法从那几个小时中解脱出来。因此,您必须在Kibana中创建一个自定义字段。
现在,我们将添加hour
字段:
doc['myDateField'].date.hourOfDay
,其中myDateField
是带有文档日期的字段。有!现在,您可以在“发现”或“可视化”部分中找到您的新字段。
在此处查找更多类型的聚合(例如date.dayOfWeek
):