为了账号安全,请及时绑定邮箱和手机立即绑定

获取时间窗口的楼层

获取时间窗口的楼层

蝴蝶不菲 2023-08-08 16:46:24
最好的方法是使用分区根据文档:GET /_search{   "size": 0,   "aggs": {      "expired_sessions": {         "terms": {            "field": "account_id",            "include": {               "partition": 1,               "num_partitions": 25            },            "size": 20,            "order": {               "last_access": "asc"            }         },         "aggs": {            "last_access": {               "max": {                  "field": "access_date"               }            }         }      }   }}https://www.elastic.co/guide/en/elasticsearch/reference/6.8/search-aggregations-bucket-terms-aggregation.html#_filtering_values_with_partitions
查看完整描述

1 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

如果你想向下舍入时间,请使用time.Truncate:

t := time.Now()

fmt.Println(t.Truncate(5*time.Second))

将此应用到您的需求:


// returns in UTC timezone - regardless of input timezone

func getWindow(t time.Time, windowLength time.Duration, step int64) time.Time {

    return t.UTC().Truncate(windowLength).Add(

        time.Duration(step) * windowLength,

    )

}


// time.Now() may be in any timezone - but UTC will be returned (see above)

func GetWindow(windowLength time.Duration, step int64) time.Time {

    return getWindow(time.Now(), windowLength, step)

}

具有替代时区等的演示:https ://play.golang.org/p/gqsT4LvWdDi

添加到您的测试代码:https://play.golang.org/p/UDPlsR6IGPw


查看完整回答
反对 回复 2023-08-08
  • 1 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信