2015-04-28 3 views
2

Используя Logstash, я хочу индексировать документы в Elasticsearch и указать тип, идентификатор и т. Д. Документа, который необходимо проиндексировать. Как я могу указать их в моей конфигурации, не сохраняя в моих документах бесполезные поля?Удалить поле события и указать его в Logstash

Пример: Я хочу, чтобы указать идентификатор, используемый для вставки:

input { 
    stdin { 
     codec => json {} 
    } 
} 

output { 
    elasticsearch { document_id => "%{[id]}" } 
} 

Это будет вставить документ в Elasticsearch с идентификатором ID но документ будет держать избыточное поле «ID» в отображении , Как я могу избежать этого?

Я думал о добавлении

filter{ mutate { remove_field => "%{[id]}"} } 

в конфигурации, но поле удаляется и не может быть, следовательно, использовать в качестве document_id ...

+0

Может кто-нибудь объяснить, почему у меня есть -1 на вопрос, так что я могу его улучшить? – Heschoon

ответ

4

Прямо сейчас это не представляется возможным. Logstash 1.5 вводит поле @metadata, содержимое которого не входит в то, что в конечном итоге отправлено на выходы, поэтому вы сможете создать поле [@metadata] [id] и указать его на своем выходе,

output { 
    elasticsearch { document_id => "%{[@metadata][id]}" } 
} 

без этого поля, загрязняющего полезную нагрузку сообщения, проиндексированную в Elasticsearch. См. @metadata documentation.

Смежные вопросы