elasticsearch Logstash从字符串创建一个值数组
我的日志中有以下一组信息。它是JSON格式的elasticsearch Logstash从字符串创建一个值数组,elasticsearch,logstash,logstash-configuration,elasticsearch,Logstash,Logstash Configuration,我的日志中有以下一组信息。它是JSON格式的 { "someField":"someValue", "columns":"[colName1, colName2, colName3, ... colNameN]", "someField":"someValue" } 我希望将其作为数组存储在同一字段列中 我想展示的用例是有多少用户使用了名为colName1的特定列,以及该列的数量 我在output.conf中使用了elkstak5.xMutate.conf可能会对您
{
"someField":"someValue",
"columns":"[colName1, colName2, colName3, ... colNameN]",
"someField":"someValue"
}
我希望将其作为数组存储在同一字段列中
我想展示的用例是有多少用户使用了名为colName1
的特定列,以及该列的数量
我在output.conf中使用了
elkstak5.x
Mutate.conf可能会对您有所帮助
请点击此链接-
虽然不支持从字符串到数组的直接转换。一段时间前,我遇到了相同的用例,为此使用了合并功能。我建议使用一些虚拟字段并与“columns”字段合并以创建新的数组字段。希望这能有所帮助。如果您的源代码是直接json格式的 使用json插件
filter {
json {
source => "message"
}
}
数组字段将自动转换为数组
我通过参考上述两个答案得到了解决方案。 这就是我所做的 要从字符串中删除
[
和]
,我使用以下方法:
mutate {
gsub => ["columns", "[\[\]]", ""]
}
然后将其转换为数组:
mutate {
split => { "columns" => "," }
}
我知道它将自动转换为数组。但在我的例子中,我使用ThreadContext来放置值。ThreadContext仅支持
String
vales。因此,尽管我的值看起来是数组格式,但它们实际上是以字符串格式导出到日志文件中的。那么在这种情况下这会影响吗?ThreadContext是logstash插件吗?如果不是,默认情况下,您提供的json格式应该来自消息字段,所以我不知道您指的是ThreadContextNo,它不是logstash插件,但它是一个java库,可以帮助我在字段中输入值并跨字段使用。@VishalKinjavdekar我想您的数据仍然会通过消息传递,您可以检查吗?我检查了。。。在kibana中,即使使用了json插件,它也会显示为文本字段