Удалить поле события и сослаться на него в 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.

Другие вопросы по тегам