Logstash 从字符串创建值数组
Logstash Create an array of values from string
我的日志中有以下一组信息。它是 JSON 格式。
{
"someField":"someValue",
"columns":"[colName1, colName2, colName3, ... colNameN]",
"someField":"someValue"
}
我希望将其作为数组存储在同一字段中 columns
。
我想显示的用例是有多少用户使用了名为 colName1
的特定列及其计数。
我正在使用ELK stak 5.x
output.conf 中的变异可能对您有所帮助。
尽管不支持从字符串直接转换为数组。前段时间我遇到了同样的用例,为此使用了合并功能。我建议有一些虚拟字段并与 'columns' 字段合并以创建新的数组字段。希望这有帮助。
如果你的源直接是json格式
使用 json 插件
filter {
json {
source => "message"
}
}
数组字段将自动转换为数组
https://www.elastic.co/guide/en/logstash/current/plugins-filters-json.html
我参考了上面两个答案得到了解决方案。
这就是我所做的。
要从字符串中删除 [
和 ]
,我使用了这个:
mutate {
gsub => ["columns", "[\[\]]", ""]
}
然后将其转换为数组:
mutate {
split => { "columns" => "," }
}
我的日志中有以下一组信息。它是 JSON 格式。
{
"someField":"someValue",
"columns":"[colName1, colName2, colName3, ... colNameN]",
"someField":"someValue"
}
我希望将其作为数组存储在同一字段中 columns
。
我想显示的用例是有多少用户使用了名为 colName1
的特定列及其计数。
我正在使用ELK stak 5.x
output.conf 中的变异可能对您有所帮助。
尽管不支持从字符串直接转换为数组。前段时间我遇到了同样的用例,为此使用了合并功能。我建议有一些虚拟字段并与 'columns' 字段合并以创建新的数组字段。希望这有帮助。
如果你的源直接是json格式
使用 json 插件
filter {
json {
source => "message"
}
}
数组字段将自动转换为数组
https://www.elastic.co/guide/en/logstash/current/plugins-filters-json.html
我参考了上面两个答案得到了解决方案。 这就是我所做的。
要从字符串中删除 [
和 ]
,我使用了这个:
mutate {
gsub => ["columns", "[\[\]]", ""]
}
然后将其转换为数组:
mutate {
split => { "columns" => "," }
}