2016-10-18 4 views
0

У меня есть журнал, который работает, вытягивая записи из postgresql и создавая документы в эластичном поиске, но всякий раз, когда я пытаюсь обновить запись в postgres, то же самое не находит отражение в упругом поиске, вот мой INPUT & OUTPUT конфиги дайте мне знать, если я что-то здесь отсутствует,Уточнение проблемы с документом

input { 
    jdbc { 
    # Postgres jdbc connection string to our database, mydb 
    jdbc_connection_string => "jdbc:postgresql://127.0.0.1:5009/data" 
    # The user we wish to execute our statement as 
    jdbc_user => "data" 
    jdbc_password=>"data" 
    # The path to our downloaded jdbc driver 
    jdbc_driver_library => "/postgresql-9.4.1209.jar" 
    # The name of the driver class for Postgresql 
    jdbc_driver_class => "org.postgresql.Driver" 
    #sql_log_level => "debug" 
    jdbc_paging_enabled => "true" 
    jdbc_page_size => "5000" 
    schedule => "* * * * *" 
    # our query 
    clean_run => true 
    last_run_metadata_path => "/logstash/.test_metadata" 
    #use_column_value => true 
    #tracking_column => id 
    statement => "SELECT id,name,update_date from data where update_date > :sql_last_value" 
    } 
    } 

    output { 
    elasticsearch{ 
    hosts => ["127.0.0.1"] 
    index => "test_data" 
    action => "index" 
    document_type => "data" 
    document_id => "%{id}" 
    upsert => ' { 
    "name" : "%{data.name}", 
    "update_date" : "%{data.update_date}" 
    } ' 
    } 
    } 

ответ

0

Я думаю, что нужно отслеживать дату/временной метки столбца вместо столбца ID. Если у вас есть столбец UPDATE_DATE, который изменяется при каждом обновлении, это было бы хорошо.

Ваш оператор SELECT будет захватывать только новые записи (т. Е. id > last_id), и если вы обновите запись, его идентификатор не изменится, поэтому обновленная запись не будет подхвачена вводом jdbc при следующем запуске.

+0

спасибо, так я должен изменить ниже – GG0424

+0

tracking_column => UPDATE_DATE оператора => "SELECT ID, имя, UPDATE_DATE из данных, где идентификатор>: sql_last_value" – GG0424

+0

Вы ни нужно '' tracking_column' ни use_column_value', как по умолчанию ' : sql_last_value' будет содержать отметку времени – Val

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