在用kibana discover的时候,碰到个问题,我的Date类型的格式为
"CreateTime":{
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss",
"locale":"zh_CN",
"doc_values":true
}
在用elasticsearch查询的时候,这样的格式没有问题,但是在discover中,显示的日期会是CreateTime+8小时,而discover中的查询也是按+8小时来算,这样时间筛选就没有意义了。为了方便的使用discover的功能,这个问题必须解决。
时间的格式问题
修改默认的时区
可以在Management > Kibana > Advanced Setting 里面修改Date format和Timezone for date formatting,改成本地时区,但是这样的修改,时间格式能显示正确,却在时间筛选的时候出现问题,比如选择Last 15 minutes 的时间区间,却发现出来的时间不对,点击inspect,查看Request timestamp信息,发现请求的时间依然是按8小时前来算的,也就是说这是8小时前的15分钟的数据;
修改CreateTime显示格式
在Management > kibana > Index Patterns ,找到你的索引,修改CreateTime的格式(如图)
这样在discover 里面CreateTime就能按正确的时间格式显示了。
这两种方法可以综合起来
时间筛选区间
默认不管你设置了哪个时区,在discover上面筛选的时候,都是从8个小时前算的,因为discovery用的是时间戳为参数去请求,所以这个时候elasticsearch也是按时间戳去解析,CreateTime没带时区的话,就用会默认时区。
所以只能调整CreateTime的时间格式,让这个CreateTime自带时区信息,
"CreateTime":{
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd'T'HH:mm:ss.SSSZ",
"locale":"zh_CN",
"doc_values":true
}
这样,时间筛选的问题终于正确了