Logstash add_field nie wypełnia wartość, zamiast sztywno koduje składnia w indeksie

0

Pytanie

Staram się stworzyć nowy wyjściowy wskaźnik, za pomocą 3 wejściowych indeksu. W nowym wyjściowym indeksie muszę wypełnić kilka wybranych pól z wejścia indeksu. Próbuję utworzyć nowe pole za pomocą add_field.to trudne kodowanie typu "%{[nazwa_indeksu][field1inIndex1]} " zamiast wypełniania wartości indeksu. Próbowałem poniższy kod:

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

Najlepsza odpowiedź

0

Jeśli link sprintf nie trzymana, to wskazuje na to, że pole nie istnieje w zdarzeniu.

Nazwa indeksu nie jest dodawany do nazwy pola, podczas wprowadzania elasticsearch. (Może być dodany jako część [@metadata], jeśli włączysz opcję docinfo.) Dlatego, jeśli tylko nazwa pola dokumentu w indeksie, z którego czytasz, nie zawiera nazwę indeksu, trzeba

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

Jeśli naprawdę potrzebujesz nazwa indeksu w [nazwa nowego pola], trzeba użyć link do niego, np.

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

Dziękuję, @Badger. powyżej odpowiedź działa. Ale mam docinfo => "true" w mojej wtyczce wprowadzania. Dlatego musi brać nazwa indeksu
slj

Skorygowany odpowiedź, aby pokazać, jak korzystać nazwa indeksu.
Badger

W innych językach

Ta strona jest w innych językach

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