arrays - Logstash 拆分字段为多个字段或拆分数组为多个字段

标签 arrays split logstash translate logstash-configuration

我有一个正在解析的 .txt 文件,其中一个字段 inputFields 具有多个值。

INPUT
@07  
@09
@11

我可以成功地将 inputFields 理解、变异和拆分为一个包含所有值的数组。

图案.txt

INPUT_FIELDS (?<inputFields>INPUT\s*(@\d*)*)

logstash.conf

grok {
        match => [ "message", "%{INPUT_FIELDS}"]
    }
mutate {
        gsub => ["inputFields", "INPUT\s*@", ""]
        split => ["inputFields", "@"]
    }

给我这个输出

"inputFields" => [
  [0] "07",
  [1] "09",
  [2] "11"
 ] 

问题是,我想使用翻译插件,它不适用于数组值。

我想将这个数组拆分成同一个文档中的多个字段。最好,每个字段都被标记为“input_field[i]”。

例如:

"input_field1" => "07",
"input_field2" => "09", 
"input_field3" => "11"

我已尝试定制此响应 Logstash grok filter - name fields dynamically ,它使用 Ruby 来满足我的需要,但它将字段拆分为多个文档,或者将它们保留在同一个字段中而不拆分。

有人可以帮我处理 Ruby 代码,或者拆分插件配置吗?

更新 我能够为输入字段创建单独的事件,但我无法创建带有索引的字段。我必须使用该字段本身来动态创建一个新字段。

我删除了 mutate { split },并改为使用 Ruby 拆分它。

这是我的新代码

ruby {
        code => "
            inputs = event['inputFields'].split('@')
            for input in inputs
                event['inputField_' + input] = input
            end
        "
    }

这创造了

"inputField_07" => "07"
"inputField_09" => "09"
"inputfield_11" => "11"

我仍然会接受有关如何将这些更改为 inputField_[index] 的任何建议。我尝试在 Ruby 中使用不同的变量,但我无法将它们添加到新的字段名称中。

动态命名字段产生了一个新问题。我想使用翻译插件,但你必须选择一个特定的领域进行翻译才能看到。由于我创建的字段都有不同的名称,因此我无法指向其中任何一个。我试过使用正则表达式来匹配字段,但翻译不支持。

建议??

最佳答案

您可以通过这种方式实现无需 ruby​​ 代码即可拆分为新字段的目标:

mutate {
    # split the field on ::
    split => ["api_class" , "::"]
    # save the last element of the array as the api_method.
    add_field => ["api_method", "%{[api_class][-1]}" ]
}

我自己在 this page 上找到了这个答案.

祝你好运!

关于arrays - Logstash 拆分字段为多个字段或拆分数组为多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36431870/

相关文章:

Javascript 包含的函数在所有条件下都返回 false。只有其他部分被执行

r - 分割特定元素的向量,但将连续元素视为一个

elasticsearch - 无法使用logstash将索引从外部文件加载到elasticsearch

logstash - 使用logstash导入数据到elasticsearch,速度太慢

sql - Kibana-在可视化中连接多种类型的数据

java - 为什么从变量获取值比从数组获取值更受欢迎?

php - mysqli_query "where = $some_array"只需要一个匹配项

arrays - 使用 Elixir 绘制数组的深度映射

python - 当列表元素是需要解析的文本页时,如何将列表的每个元素存储在数据框中?

java - 如何在 java 中用逗号后跟冒号分割字符串?