2014-09-24 2 views
15

У меня есть базовая настройка Logstash -> Elasticsearch, и, оказывается, поле «message» не требуется после того, как фильтр logstash выполнил свое задание. Сохранение этого необработанного поля сообщения в elasticsearch только добавляет ненужные данные в хранилище imo.Могу ли я удалить поле сообщения из Logstash?

Могу ли я безопасно удалить это поле, и это вызовет проблемы с ES? советы или чтения приветствуются, спасибо всем.

ответ

24

Нет, это не вызовет проблем с ES. Вы можете удалить поле message, если оно является избыточным или неиспользуемым.

Вы можете добавить это filter в конец фильтров.

mutate 
{ 
    remove_field => [ "message" ] 
} 
+1

ProTip: Большинство фильтров (например, Grok) позволяет также возможность remove_field, и будет удалите только поле, если фильтр не встретит ошибку. Это может быть безопаснее и проще, чем использование дополнительного фильтра мутатов. –

4

Вы также можете сделать это в пределах фильтра json.

filter { 
    json { 
    source => "message" 
    remove_field => ["message"] 
    } 
} 
0

Я бы добавил следующее в качестве комментария к ответу Бен Лим, но я не знаю, как добавить блок кода в комментарии, или даже того, что можно ...

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

Например, следующая комбинация входных и кодек (JSON линия над TCP) не создает message поля:

input { 
    tcp { 
    port => 5044 
    codec => json_lines 
    } 
} 
output { 
    elasticsearch { 
    hosts => ["localhost"] 
    document_type => "mytype" 
    index => "myindex" 
    } 
} 
Смежные вопросы