【问题标题】:Logstash - find in array where object's field containsLogstash - 在对象字段包含的数组中查找
【发布时间】:2017-01-01 09:29:41
【问题描述】:

我有一个数组,其中包含一个带有键和值的对象。我想检查“key”字段是否等于某个值。

这行得通 -

if "MyTest" in [doc][customInput][tags][0][key]             
mutate {  add_field  => {"[doc][test]" => "5555"}}              

但我硬编码了 [0] 索引,相关条目可能不是数组中的第一个。

我该怎么写?

【问题讨论】:

  • 这里很不清楚“相关条目可能不是数组中的第一个”?即使它不是数组中的第一项,它还是会搜索整个数组对吗?
  • @Darth_Vader - 它将搜索整个数组,但如果数组包含原始字符串就可以了,问题是我需要访问对象内的“key”字段(每个元素的数组都是一个对象),如果不硬编码 [0] 索引,我不知道该怎么做?

标签: logstash logstash-configuration


【解决方案1】:

我最终为此使用了一个 ruby​​ 过滤器(没有它就找不到任何方法):

filter {
    ruby {
        code => "
                myArray = event['doc']['customInput']['tags']   
                if myArray && myArray.detect{|t| t['key'] == "MyTest"}      
                    event['doc']['test'] = tags_array.detect{|t| t['key'] == 'MyTest'}['value']
                end         
                "
         }
       }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    相关资源
    最近更新 更多