Я пытаюсь импортировать все данные наших заказов вasticsearch, используя входные данные jstbc logstash. Запрос sql включает в себя объединения 7 таблиц, и после объединения индексация невозможна, и между таблицами существует отношение один ко многим. После соединения осталось около 3 миллионов строк.
Я хочу импортировать данные о заказах изо дня в день, так как записей будет меньше, вместо того, чтобы выполнять весь запрос по всем заказам до даты и разбивать их на страницы. Если я запрашиваю все данные, база данных поражается при расчете количества записей.
Как я могу запускать импорт день за днем, не останавливая logstash и не настраивая параметры даты SQL динамически.
Это моя текущая конфигурация задания logstash
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://dbhostname:3306/mydatabase?zeroDateTimeBehavior=CONVERT_TO_NULL"
jdbc_user => "username"
jdbc_password => "password"
jdbc_driver_library => "/home/username/mysql-connector-java-8.0.11.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
statement => "select * from table1 t1, table2 t2 ,table3 t3 , table4 t4, table5 t5, table6 t6 where some_condition and some_other_condition and t1.created_at between 'date1_start' and 'date1_end'"
}
}
output {
stdout { codec => json_lines }
elasticsearch {
"hosts" => "localhost:9200"
"index" => "orderdata_prod"
"document_type" => "data"
}
}
Я хочу динамически изменить оператор, представленный в конфигурации, на новые значения даты. Как я могу этого достичь? Или есть альтернативные способы импорта таких данных?