我有一个solr查询(Solr版本6.0.2),它对每天的销售进行分组和汇总。以下参数一切都很好:
json.facet=sales:{
type:range,
field:date_add,
start:'2016-05-31T22:00:00Z',
end:'2016-10-31T22:59:59Z',
gap:'+1DAY',
facet:{
ordersSum:'sum(sales_value)'
}
}
( start 参数中指定的小时22:00:00是因为时区,因为Solr以UTC格式保留日期,而我的应用程序在欧洲/华沙时区工作)
有了这个,我就在开始和结束参数之间指定的日期获得了不错的销售价值。但是现在我想做同样的事情,但是以月为基础,所以我想要7月7月的销售[...] 10月。
我已经发现,可以将间隙参数更改为'+ 1MONTH',但这些值不一致,因为几个月不相等:
"val":"2016-05-31T22:00:00Z",
"val":"2016-06-30T22:00:00Z",
"val":"2016-07-30T22:00:00Z",
"val":"2016-08-30T22:00:00Z",
"val":"2016-09-30T22:00:00Z",
可以看出,日期默认为第一个出现的较低天数(即7月和agust有31天)。同样可以通过将 start 参数操作为:
来解决问题2016-05-31T22:00:00Z/MONTH
/ MONTH 后缀告诉Solr默认为午夜的第一天。然后提取日期看起来不错:
"val":"2016-06-01T00:00:00Z",
"val":"2016-07-01T00:00:00Z",
"val":"2016-08-01T00:00:00Z",
"val":"2016-09-01T00:00:00Z",
"val":"2016-10-01T00:00:00Z",
但是,给定的日期值对于UTC时区是正确的。 Solr有没有办法正确添加月份,或为结果设置时区?
答案 0 :(得分:1)
好的,我想我已经明白了。通过向查询添加其他参数,可以为Solr查询全局设置时区:
&安培; TZ =欧洲/华沙
在我的情况下,结果如下:
"val":"2015-08-31T22:00:00Z",
"val":"2015-09-30T22:00:00Z",
"val":"2015-10-31T23:00:00Z",
"val":"2015-11-30T23:00:00Z",
(我已经稍微更改了开始 / 结束参数,以显示如何保存夏令时)。此外,在这种情况下不需要 / MONTH 后缀,它只会有助于保持正确的开始时间。