我有一个带有字段的elasticsearch服务器:timestamp
, user
and bytes_down
(除其他外)
我想计算用户一个月内的 bytes_down 值总计,但仅限于上午 8 点到晚上 8 点之间的时间
我可以通过以下查询获取带有日期直方图的每日总计(我在这里使用 Perl API),但无法找到将其减少到每天的小时范围的方法
my $query = {
index => 'cm',
body => {
query => {
filtered => {
query => {
term => {user => $user}
},
filter => {
and => [
{
range => {
timestamp => {
gte => '2014-01-01',
lte => '2014-01-31'
}
}
},
{
bool => {
must => {
term => { zone => $zone }
}
}
}
]
}
}
},
facets => {
bytes_down => {
date_histogram => {
field => 'timestamp',
interval => 'day',
value_field => 'downstream'
}
}
},
size => 0
}
};
谢谢
戴尔
我认为你需要使用script http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-script-filter.html过滤而不是range
过滤然后你需要把它放进去facet_filter
你的侧面部分:
"facet_filter" => {
"script" => {
"script" => "doc['timestamp'].date.getHourOfDay() >= 8 &&
doc['timestamp'].date.getHourOfDay() < 20"
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)