2015-09-09 2 views
0

Фильтр не работает translate. В выводе logstash я все еще вижу dport записей со значением -. Однако, если я раскомментирую параметр назначения, фильтр работает как ожидалось, генерируя поле test со значением -1, когда это необходимо. Почему перевод на месте не работает?Logstash перевод не работает на месте

translate { 
    field => "dport" 
    #destination => "test" 
    dictionary => ["-", "-1"] 
} 

Некоторые фона: Я пытаюсь иметь все dport значения как целые числа, так что поле может быть проиндексированы правильно elasticsearch. Поле dport должно содержать целое число, однако, если поле не было инициализировано, регистрируется значение -.

ответ

1

Либо мое понимание документации неверно, либо это bug.

В любом случае, это похоже на работу:

translate { 
    field => "dport" 
    destination => "dport" 
    override => "true" 
    dictionary => ["-", "-1"] 
} 
0

Я проверить это поведение с последней версией плагинов, добавив этот тест: ` описывают«implace перевод»делать

let(:config) do 
    { 
    "field"  => "status", 
    "dictionary" => [ "-", "-1"] 
    } 
end 

let(:event) { LogStash::Event.new("status" => "-") } 

it "return the exact translation" do 
    subject.register 
    subject.filter(event) 
    expect(event["translation"]).to eq("-1") 
end 

и все работает так, как ожидалось. Имейте в виду, что поле по умолчанию для перевода является полем перевода, но не уверен, что это может быть источником вашей проблемы.

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