尝试将结构化的json数据发送到es(elastic search)上,而后建立视图,这样就能以小时维度查看数据,直接使用post发送到es后,建立索引,结果提示 没有date类型的字段(field)。通过一番搜索和请教同事同窗,最后尝试以下方法解决:json
删除原有的索引,而后在发送数据到ES前的时候先 发送以下请求(es 5.0版本):app
http://yourhost.com/yourindex/ 发送post 或者put请求,请求内容post
{ "mappings": { "你的type 好比log": { "properties": { "时间戳字段名称 log_time": { "type": "date", "format": "yyyy-MM-dd HH:mm:ss" } } } } }
这样能够指定你的log_time 为date类型 。spa
而后就能够发送带着这个log_time 的请求到 es中,而后在kibana中建立index索引,刷新索引便可看到相关field。(数字和字符串为推断类型) 3d
这个时候可自动刷新找到 datefield code
此时查看索引的类型,log_time 就是date类型:orm
而后便可建立对应的视图,选择x轴为date histogram类型的fied log_timeblog
发送的完整的json请求示例:索引
{"vs_imp": 0, "vs_bid": 0, "mv_cost": 0.0, "mv_revenue": 0.0, "mv_bid": 0, "vs_cost": 0.0, "mv_imp": 0, "vs_revenue": 0.0, "vs_request": 14488636, "log_time": "2017-04-14 12:00:00", "mv_request": 960607}字符串
如上便解决 字符串时间致使x轴没法显示日期的问题。
其余问题:
1, 数据发送后没法使用put请求进行修改
解决办法:发送数据的时候须要指定 index/type/:id (例如id为年月日小时来作到指定id 之后用put更新 )
2, 提示Saved “field” parameter is now invalid. Please select a new field "
解决办法:和发送的数据有关,检查数据中是否缺乏关键字段 好比时间戳
3, kibana上的曲线时间比数据实际时间多8个小时(版本 5.3)
解决办法:对发送的数据中的时间戳减去8个小时(GMT0),kibana会自动加8个小时。