Фильтровать глубокие поля документа MongoDB с помощью Logstash - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь переименовать некоторые глубокие поля из моего документа MongoDB перед их загрузкой в ​​Elasti c с использованием Logsta sh.

Например: мой документ MongoDB выглядит следующим образом:

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

Мне удалось получить доступ к полю "имя" в logsta sh следующим образом:

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]}"} }

Но все равно не работает.

Есть ли способ получить доступ к глубоким полям?

1 Ответ

0 голосов
/ 27 февраля 2020

Я нашел решение следующим образом:

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

или

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

Индекс infoArray должен быть указан в Logsta sh.

...