Могу ли я удалить поле сообщения из Logstash?

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

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


person James Jiang    schedule 24.09.2014    source источник


Ответы (3)


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

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

mutate
{
     remove_field => [ "message" ]
}
person Ben Lim    schedule 24.09.2014
comment
Совет: большинство фильтров (например, Grok) также допускают опцию remove_field и удаляют поле только в том случае, если фильтр не обнаруживает ошибки. Это может быть и безопаснее, и проще, чем использование дополнительного фильтра изменения. - person Brian Papantonio; 11.05.2017

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

filter {
  json {
    source => "message"
    remove_field => ["message"]
  }
}
person Steve    schedule 10.09.2016
comment
это сбой моего вывода kafka, только часть remove_field, не знаю почему :( - person llermaly; 24.12.2020

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

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

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

input {
  tcp {
    port => 5044
    codec => json_lines
  }
}
output {
  elasticsearch {
    hosts => ["localhost"]
    document_type => "mytype"
    index => "myindex"
  }
}
person Graham Hannington    schedule 07.03.2017