elastic search 日期为string类型导致视图无法展示时间的解决办法

尝试将结构化的json数据发送到es(elastic search)上,然后创建视图,这样就能以小时维度查看数据,直接使用post发送到es后,创建索引,结果提示 没有date类型的字段(field)。经过一番搜索和请教同事同学,最后尝试如下方法解决:

删除原有的索引,然后在发送数据到ES前的时候先 发送如下请求(es 5.0版本):

http://yourhost.com/yourindex/   发送post 或者put请求,请求内容

{
  "mappings": {
    "你的type 比如log": {
      "properties": {
        "时间戳字段名称 log_time": {
          "type": "date",
          "format": "yyyy-MM-dd HH:mm:ss"
        }
      }
    }
  }
}

这样可以指定你的log_time 为date类型 。

然后就可以发送带着这个log_time  的请求到 es中,然后在kibana中创建index索引,刷新索引即可看到相关field。(数字和字符串为推断类型) 

这个时候可自动刷新找到 datefield 

此时查看索引的类型,log_time 就是date类型:

 

 

 

然后即可创建对应的视图,选择x轴为date histogram类型的fied log_time

 发送的完整的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个小时。

 

转载于:https://www.cnblogs.com/lavin/p/6710046.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值