使用 Logstash 过滤 MongoDB 文档的深层字段

Filter MongoDB document's deep fields using Logstash

我正在尝试重命名我的 MongoDB 文档中的一些深层字段,然后再使用 Logstash 将它们上传到 Elastic。

例如:我的 MongoDB 文档如下所示:

name: "firstDoc",
infoArray: 
[
   {infoName: "i", elements:{e1: "e1", e2: "e2"}}, 
   {infoName: "j", elements:{e3: "e3", e4: "e4"}}
]

我能够像这样访问 logstash 中的 "name" 字段:

mutate { add_field => {"[otherDoc][name]" => "%{[document][name]}"} }

但我无法访问 infoArray 中的字段,我已尝试重命名:

mutate { rename => {"[document][infoArray][elements][e1]" => "[otherDoc][e1]"} }

我也尝试过将其添加为新字段:

mutate { add_field => {"[otherDoc][e1]" => "%{[document][infoArray][elements][e1]}"} }

但还是不行。

有什么方法可以访问深层字段吗?

我已经找到解决方法,如下:

mutate { rename => {"[document][infoArray][0][elements][e1]" => "[otherDoc][e1]"} }

mutate { add_field => {"[otherDoc][e1]" => "%{[document][infoArray][0][elements][e1]}"} }

infoArray的索引需要在Logstash中指定。