Я новичок в поиске логсташа и elasticsearch. Я использую logstash для чтения обновлений db и хранения в elasticsearch для быстрого поиска. Ниже приведен мой файл конфигурации logstash (countries.conf).Выход Logstash неверен
input {
jdbc {
jdbc_driver_library => "/home/vagrant/postgresql-9.4-1201.jdbc4.jar"
jdbc_driver_class => "org.postgresql.Driver"
jdbc_connection_string => "jdbc:postgresql://192.168.10.123:5432/myDB"
jdbc_user => "myuser"
jdbc_password => "mypassword"
schedule => "* * * * *"
statement_filepath => "/home/vagrant/countries.sql"
last_run_metadata_path => "/home/vagrant/logstash/countries.log"
}
}
output {
elasticsearch {
index => "myIndex"
document_type => "countries"
document_id => "%{id}"
hosts => "localhost:9200"
}
stdout { codec => json_lines }
}
И мой файл countries.sql выглядит следующим образом
SELECT json.id as id,
row_to_json(json.*) AS _source
FROM (
SELECT id, created, modified, name, capital, iso_alpha2, iso_alpha3
FROM countries
) as json
бегаю конфигурационный файл, используя следующую команду
sudo /opt/logstash/bin/logstash -f /home/vagrant/countries.conf
Вывод выше команды на стандартный вывод заключается в следующем: -
Settings: Default pipeline workers: 1
Pipeline main started
{"_id":6,"_source":{"type":"json","value":"{\"id\":6,\"created\":\"2013-02-07T10:11:00\",\"modified\":\"2016-04-29T11:15:40.329\",\"name\":\"Andorra\",\"capital\":\"Andorra la Vella\",\"iso_alpha2\":\"AD\",\"iso_alpha3\":\"AND\"}"},"@version":"1","@timestamp":"2016-05-02T10:08:00.931Z"}
Как вы можете видеть i n выше output my json string в поле _source изменяется. В идеале это должно быть примерно
{"_id":6,"_source":{\"id\":6,\"created\":\"2013-02-07T10:11:00\",\"modified\":\"2016-04-29T11:15:40.329\",\"name\":\"Andorra\",\"capital\":\"Andorra la Vella\",\"iso_alpha2\":\"AD\",\"iso_alpha3\":\"AND\"},"@version":"1","@timestamp":"2016-05-02T10:08:00.931Z"}
Logstash меняет мою строку json. Он добавляет тип: «json» дополнительное поле и добавление моего фактического json sting в значение поле. Я пересек чек в db. Мой SQL-запрос корректно возвращает строку json в формате, который мне нужен.
Может кто-нибудь, пожалуйста, сообщите мне, что мне не хватает? или Может вести меня в правильном направлении?
Спасибо заранее!
Спасибо за ваш ответ. Я проверил данные индекса в elasticsearch. Он также имеет тип: json field. Я также использовал мутацию, но она не удаляется. Кроме того, я также удалил codec => json_lines в stdout. Но я все еще сталкиваюсь с аналогичной проблемой. – prashant
Я тестировал то же самое. Но по умолчанию не добавлено поле типа, добавленное jdbc, и ни один из них не активирует добавление поля «type» в _source. –
Проверьте, не используется ли какой-либо фильтр. –