Удалить поле события и сослаться на него в Logstash
Используя Logstash, я хочу проиндексировать документы в Elasticsearch и указать тип, идентификатор и т. Д. Документа, который необходимо проиндексировать. Как я могу указать их в моей конфигурации, не оставляя ненужных полей в моих документах?
Пример: я хочу указать идентификатор, используемый для вставки:
input {
stdin {
codec => json {}
}
}
output {
elasticsearch { document_id => "%{[id]}" }
}
Это вставит документ в Elasticsearch с идентификатором id, но документ сохранит избыточное поле "id" в отображении. Как я могу избежать этого?
Я думал о добавлении
filter{ mutate { remove_field => "%{[id]}"} }
в конфигурации, но поле удаляется и, следовательно, не может использоваться как document_id...
1 ответ
Сейчас это невозможно. Logstash 1.5 вводит поле @metadata, содержимое которого не включается в то, что в конечном итоге отправляется на выходы, поэтому вы сможете создать поле [@metadata][id] и сослаться на это в своем выводе,
output {
elasticsearch { document_id => "%{[@metadata][id]}" }
}
без того поля, загрязняющего полезную нагрузку сообщения, индексированного к Elasticsearch. Смотрите документацию @metadata.