2015-08-13 2 views
1

С новым logstash JDBC разъем здесь:logstash время JDBC разъем на основе данных

https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html Как последующее logstash запускает эффект, Что уже проиндексированы в ElasticSearch? Создает ли он новые документы в индексе ES или обновляет документы, которые соответствуют строке, которая уже была индексом? Вариант использования, который я пытаюсь решить, - это индексировать строки с отметками времени в эластичном поиске, но таблица постоянно обновляется. Мне хотелось бы только индексировать новые данные или, если мне нужно снова прочитать таблицу, добавлять новые документы только для новых строк.

Любые предложения? Или больше документации вокруг плагина logstash jdbc?

ответ

4

Что бы я сделал, это включить в запрос запрос отметку времени последнего запуска плагина (то есть sql_last_start), и поэтому он будет загружать только обновленные записи.

Например, ваш jdbc вход плагин будет выглядеть следующим образом:

input { 
    jdbc { 
    jdbc_driver_library => "mysql-connector-java-5.1.36-bin.jar" 
    jdbc_driver_class => "com.mysql.jdbc.Driver" 
    jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb" 
    jdbc_user => "mysql" 
    schedule => "* * * * *" 
    statement => "SELECT * FROM mytable WHERE timestamp > :sql_last_start" 
    } 
} 

Убедитесь, что изменить timestamp с именем вашего поля, содержащего последнюю обновленную дату и mytable с реальным именем вашей таблицы.

+0

работает отлично, спасибо – AgentRegEdit

+1

еще один совет: если ваши данные меняются со временем, и вы хотите обновить соответствующие записи в эластичном состоянии, вы можете установить эластичный 'document_id' на выходе. 'output {elastic {document_id =" your_primary_key "}}' – Dude

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