Logstash add_field не заполняет значение, вместо этого он жестко кодирует синтаксис в индексе

0

Вопрос

Я пытаюсь создать новый выходной индекс, используя 3 входных индекса. В новом выходном индексе мне нужно заполнить несколько определенных полей из входного индекса. Я пытаюсь создать новое поле с помощью add_field.это жесткое кодирование типа "%{[имя_индекса][field1inIndex1]} " вместо заполнения значения из индекса. Я попробовал приведенный ниже код:

input
{
elasticsearch{
hosts => ["hostname"]
index => "index1"
query => '{"query":{"match_all":{}}}'
docinfo => "true"
user => "uname"
password =>"pwd"
ssl=>"true"
}
elasticsearch {
#same like above for index2
}
elasticsearch {
#same like above for index3
}
}    
filter
{
mutate
{
add_field =>["newfieldname","%{[index1][fieldinindex1]}"]
}
}
output 
{
elasticsearch {
#creating new index here
}
}
logstash
2021-11-23 23:11:06
1

Лучший ответ

0

Если ссылка sprintf не подставлена, это указывает на то, что поле не существует в событии.

Имя индекса не добавляется к имени поля при вводе elasticsearch. (Он может быть добавлен как часть [@metadata], если вы включите опцию docinfo.) Поэтому, если только имя поля документа в индексе, из которого вы читаете, не содержит имя индекса, вам нужно

mutate { add_field => { "newfieldname" => "%{[fieldinindex1]}" } }

Если вам действительно нужно имя индекса в [имя нового поля], вам нужно использовать ссылку на него, например

mutate { add_field => { "newfieldname" => "%{[@metadata][_index]}_%{[fieldinindex1]}" } }
2021-11-24 00:55:23

Спасибо, @Badger. выше ваш ответ работает. Но у меня есть docinfo => "true" в моем плагине ввода. Поэтому он должен принимать имя индекса
slj

Скорректированный ответ, чтобы показать, как использовать имя индекса.
Badger

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................