Możesz użyć wzorca w nazwie indeksu na podstawie wartości jednego z twoich pól. Tutaj używamy wartość pola type
aby wymienić indeksu:
output {
stdout {codec => rubydebug}
elasticsearch {
host => "localhost"
protocol => "http"
index => "%{type}_indexer"
}
}
Można także użyć kilku elasticsearch
wyjścia albo do tego samego hosta ES lub do różnych ES Zastępów:
output {
stdout {codec => rubydebug}
elasticsearch {
host => "localhost"
protocol => "http"
index => "trial_indexer"
}
elasticsearch {
host => "localhost"
protocol => "http"
index => "movie_indexer"
}
}
Or może chcesz przekierować dokumenty do różnych indeksów opartych na jakiejś zmiennej:
output {
stdout {codec => rubydebug}
if [type] == "trial" {
elasticsearch {
host => "localhost"
protocol => "http"
index => "trial_indexer"
}
} else {
elasticsearch {
host => "localhost"
protocol => "http"
index => "movie_indexer"
}
}
}
UPDATE
Składnia zmieniła trochę w Logstash 2 i 5:
output {
stdout {codec => rubydebug}
if [type] == "trial" {
elasticsearch {
hosts => "localhost:9200"
index => "trial_indexer"
}
} else {
elasticsearch {
hosts => "localhost:9200"
index => "movie_indexer"
}
}
}
jesteś odnoszące się do „typ” zadeklarowanej w sekcji „Input”? jeśli tak, to czy istnieje sposób użycia jako indeksu jednego z pól w faktycznym zdarzeniu redis, które rejestruję? – Kepedizer
@Kepedizer 'type' można zdefiniować w dowolnym miejscu, zarówno w sekcji wejściowej, jak i sekcji filtru. Jedynym problemem [w twoim drugim pytaniu] (http://stackoverflow.com/questions/41531883/logstash-wont-pass-index-from-redis) jest literówka, musisz użyć '% {index}' zamiast '$ {index}' – Val
@Val Miałem straszny czas próbując znaleźć odpowiedź na to w dokumentach Logstasha, więc dziękuję bardzo za oczyszczenie. Ocena innego dla StackOverflow. –