用了Elasticsearch,一口气上5T

logstash如何判断数据类型

Logstash | 作者 valar | 发布于2018年07月12日 | 阅读数:6079

我收到的数据主要是json的,json里面的字段会存在子串,由于历史原因,这些子串有些是json的,有些是个string类型的字符串。如何判断字段类型,然后如果是string类型的就可以用json转化了,如果是json类型的就不需要转换。
已邀请:

lbx6z

赞同来自: caokegege

使用 ruby。如果字段 body 是 json,则 class.name == 'Hash',否则是 'String'
    ruby {
code => "event.set('d_class', (event.get('[body]').class.name))"
}
if [d_class] == "String" {
json {
source => "body"
target => "body"
}
}

zqc0512 - andy zhou

赞同来自:

filter判断,貌似 好像搞不定 你需要有标示。
这些都是定义好的

rockybean - Elastic Certified Engineer, ElasticStack Fans,公众号:ElasticTalk

赞同来自:

如果是 json 类型的,那么你去判断是否存在某个 key 是否存在即可,不存在则为字符串
 
if ![json_str][key_must_exist] {
      # 字符串,做 json 解析
}

要回复问题请先登录注册