Конфигурация Logstash Mysql

0

Я использую Logstash для извлечения данных из Mysql в Elastic. Конфигурация - это что-то вроде

 input {
  jdbc {
    jdbc_driver_library => "/usr/share/mysql-connector-java-5.1.46-bin.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://mysql:3306/books"
    jdbc_user => "root"
    jdbc_password=>"1"
    schedule => "* * * * *"
    statement => "SELECT * FROM book"
  }
}

Так что тянущий запрос - это просто,

  statement => "SELECT * FROM book"

что показано в большинстве документов. Вопрос в том, сможет ли logstash понять, что изменилось и что нужно индексировать/переиндексировать, или просто сканировать полную таблицу и переиндексацию всего? В моем случае данные в таблице будут в значительной степени статическими, однако они должны быть немедленно (по крайней мере, как можно скорее) доступны после создания записи. Таким образом, интервал вытягивания низкий. Должен ли я создать более сложный запрос для вытягивания или я должен предположить, что Logstash сделает трюк?

Теги:
elasticsearch
logstash

1 ответ

0
Лучший ответ

Используя вашу конфигурацию, logstash выберет все записи, выбранные в запросе SELECT * FROM book.

Если вы хотите прочитать только новую запись, вы должны установить в настройке инкрементный столбец, который будет использоваться как место в конфигурации:

jdbc {
    statement => "SELECT id, mycolumn1, mycolumn2 FROM my_table WHERE id > :sql_last_value"
    use_column_value => true
    tracking_column => "id"
    # ... other configuration bits
  }

Параметр tracking_column будет включать функцию сохранения последнего значения столбца, указанного в track_column. Последнее значение: sql_last_value может использоваться в запросе как пользовательское условие в месте. Состояние logstash будет сохранено в файловой системе, и только несколько метаданных, связанных с последним значением, будут запомнены.

Обратите внимание, что таким образом вы можете извлекать только новые вставленные записи, но в зависимости от вашей модели данных он не может получить удаление или обновление уже импортированных данных.

  • 0
    Уже нашел его, но спасибо за правильный ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню