簡體   English   中英

使用 Logstash 過濾 MongoDB 文檔的深層字段

[英]Filter MongoDB document's deep fields using Logstash

在使用 Logstash 將它們上傳到 Elastic 之前,我試圖重命名我的 MongoDB 文檔中的一些深層字段。

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

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

我能夠像這樣訪問logstash中的“名稱”字段:

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 中指定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM