ELK,萌萌哒

kibana的field的类型转换

匿名 | 发布于2017年11月27日 | 阅读数:8914

问题描述:我从message中截取一段日志,是一串数字,但是类型是string,我想转换成integer  or float。根据官网的资料进行配置,但是没有用,kibana里面显示的还是string类型的。
 
日志类型:截取RT:2中的2这个数字
2017-11-27 14:04:40,941|nioEventLoopGroup-3-247|9762e6fcad4c43f29d476d153827e7bb|dispatch,ME:sendVerifyMessage|RT:2|ET:T|INPUT:{bussinessType=******, limitCode=**********, name=WAP***注册, terminalType=02, msgRemark=CODESIGN, instID=******, mobile=**********}|OUTPUT:{surplusOnceSend=0, responseCode=9551, surplusDaySend=0, surplusDeviceSend=0, responseMsg=达到当天短信发送最大量, bussinessNo=null}
 
ELK版本号:
logstash(agent):1.5.0
logstash(index):5.5.0
elasticsearch:5.5.0
kibana:5.5.0
 
logstash(agent)端配置文件(部分配置)
mutate {
                    split => {"message" => "RT:"}
                    add_field => { "RT_time" => "%{[message][1]}" }
                }
                mutate {
                    split => {"RT_time" => "|"}
                    add_field => {"time" => "%{[RT_time][0]}"}
                    convert  => {"time" => "integer"}
                    remove_field => ["RT_time"]
                }
 
求教了各位,或者有没有其他办法进行类型转换,谢谢了。
已邀请:

chenzilong444

赞同来自:

你试试把convert写在新一个mutate里

liguobao

赞同来自:

从API获取一下你们的index看看是不是那个field是一个string类型的.
如果是的话,把es自动生成的index中你的字段改一下拿到新的mapping index json,然后用这个json创建一个新的mapping index,
然后logstash 指定成上面创建的index,重启一下logstash,新的数据就好了.
 
如:
创建mapping index

PUT /logstash-kube
{
    "mappings": {
      "kube-logs": {
        "properties": {
          "@timestamp": {
            "type": "date"
          },
         "response_time": {
            "type": "integer"
          },
          "size": {
            "type": "integer"
          }
       }
    }
  }
}
 

要回复问题请先登录注册