Estou usando um plug-in logstash para um aplicativo Java usando logback para encaminhar logs para meu servidor logstash. Eu configurei uma definição de filtro da seguinte forma:
input {
tcp {
port => 2856
codec => json_lines
}
}
filter {
mutate {
convert => {
"tenantId" => "integer"
"userId" => "integer"
}
}
}
Os logs estão sendo encaminhados para o Elasticsearch usando a seguinte configuração:
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
user => "user"
password => "secure"
}
}
O índice vai apenas para logstash-, e quando inspeciono os mapeamentos no Elasticsearch, vejo o seguinte:
"logstash-2016.04.25" : {
"mappings" : {
"logs" : {
"_all" : {
"omit_norms" : true,
"enabled" : true
},
"properties" : {
...
"userId" : {
"type" : "long"
},
"tenantId" : {
"type" : "long"
},
...
}
}
}
}
Assim, posso ver que os campos estão sendo definidos com um tipo apropriado, mas não são analisados nem definidos como valores longos quando verifico o Kibana. o que estou perdendo?
Supondo que esses sejam novos campos em um determinado índice, você precisará instruir o Kibana a atualizar sua lista de campos.