前言

从filebeat传输到Logstash的数据,某个字段需要由string类型装换成float类型。然则不管怎么改logstash的配置文件都不生效,实在官方文档都有,然则详细细节方面的器械就得自己不停的实践验证最后到达自己想要的目的了。整整一天,都在弄这一个,中心实在想放弃了。然则就如张靓颖的“终于等到你,还好没放弃”,最后在某一篇博文得到了启发,才解决。

 

这里类型转换分两个类型:

1)字段是单纯的字段,也就是直接在_source下的

2)字段是在json里的,在_source下另有嵌套一层json里的字段

 

一、单一字段

可以从下面的图中看出,字段就在顶层机构_source下,这种情况下的Logstash配置文件设置如下:

filter {
     mutate {
     convert => { "request_time" => "float" }
     convert => { "upstream_response_time" => "float" }
     }
}

 

 

 

 

二、嵌套Json下的字段

若是需要转换的字段是在非顶级结构下,是在一个JSON里,由于在filebeat做decode的时刻指定了,如我需要转换的字段是在jsonn的json字段里:

processors:
 - decode_json_fields:
    fields: ["message"]    #要举行剖析的字段
    process_array: false   #数组是否解码,默认值:false
    max_depth: 3           #解码深度,默认值:1
    target: "jsonn"          #json内容剖析到指定的字段,若是为空(“”),则剖析到顶级结构下
    overwrite_keys: false  #若是剖析出的json结构中某个字段在原始的event(在filebeat中传输的一条数据为一个event)中也存在,是否笼罩

 

 

 

这种情况下的Logstash配置文件设置如下:

filter {
    mutate {
      convert => { "[jsonn][request_time]" => "float" }
      convert => { "[jsonn][upstream_response_time]" => "float" }
   }
}

 

注重:

[jsonn][request_time] 不是[jsonn].[request_time],也不是jsonn.request_time没有点.

 

受启发的链接:

https://stackoverflow.com/questions/30369148/logstash-remove-deep-field-from-json-file

 

,

欧博开户网址

欢迎进入欧博开户网址(Allbet Gaming):www.aLLbetgame.us,欧博网址开放会员注册、代理开户、电脑客户端下载、苹果安卓下载等业务。

发布评论

分享到:

大发888游戏官网:CBA新赛季福建浔兴篮球目的是突入季后赛 成为四强
3 条回复
  1. UG环球
    UG环球
    (2020-06-26 00:53:40) 1#

    Allbet开户欢迎进入Allbet开户(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。这个文好玩

    1. 联博开奖网
      联博开奖网
      (2020-07-06 16:18:14)     

      Allbet Gmaing代理欢迎进入Allbet Gmaing代理(www.aLLbetgame.us):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。我来评论一个:不错

  2. 欧博亚洲手机版下载
    欧博亚洲手机版下载
    (2020-08-29 00:10:02) 2#

    欧博APP欢迎进入欧博APP(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。老夫心动了怎么办

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。