2017-01-01 121 views
1

我想索引數據從mysql數據庫到elasticsearch使用logstash。 Logstash運行時沒有錯誤,但問題是,它僅從我的SELECT查詢中索引一行。 下面是我使用的軟件版本:Logstash只索引從MySQL的選擇查詢的一行到彈性搜索

  • 彈性搜索:2.4.1
  • logstash:5.1.1
  • 的mysql:5.7.17
  • jdbc_driver_library:使用mysql-connector-Java的5.1.40 bin.jar

我不知道這是因爲logstash和elasticsearch版本不同。

下面是我的管道配置:

input { 
    jdbc { 
    jdbc_driver_library => "mysql-connector-java-5.1.40-bin.jar" 
    jdbc_driver_class => "com.mysql.jdbc.Driver" 
    jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb" 
    jdbc_user => "user" 
    jdbc_password => "password" 
    schedule => "* * * * *" 
    statement => "SELECT * FROM employee" 
    use_column_value => true 
    tracking_column => "id" 
    } 
} 
output { 
    elasticsearch { 
     index => "logstash" 
     document_type => "sometype" 
     document_id => "%{uid}" 
     hosts => ["localhost:9200"] 
    } 
} 

回答

2

這似乎是tracking_columnid)你使用的jdbc插件,和document_iduid)在output是不同的。如果你有他們兩個相同的,因爲它很容易通過id把所有的記錄,並使用相同的id以及可能看起來更理解他們推到ES:

document_id => "%{id}" <-- make sure you've got the exact spellings 

還請嘗試添加這下面一行到你的jdbc輸入tracking_column後:

tracking_column_type => "numeric" 

此外,以確保你沒有當你運行logstash文件包括以下行以及該.logstash_jdbc_last_run文件存在:

clean_run => true 

因此,這是你的JDBC輸入應該什麼樣子:

比的conf似乎要被罰款,除非你願意有 :sql_last_value:如果你只是想更新
jdbc { 
    jdbc_driver_library => "mysql-connector-java-5.1.40-bin.jar" 
    jdbc_driver_class => "com.mysql.jdbc.Driver" 
    jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb" 
    jdbc_user => "user" 
    jdbc_password => "password" 
    schedule => "* * * * *" 
    statement => "SELECT * FROM employee" 
    use_column_value => true 
    tracking_column => "id" 
    tracking_column_type => "numeric" 
    clean_run => true 
    } 

其他數據庫表中新增記錄。希望能幫助到你!

+0

非常感謝回覆。我不清楚幾件事情。每次調度程序運行時,它都會在ES中選擇所有行和重新索引(我知道它不會重複,因爲我們有tracking_column)?例如,我最初在表中有10行,並且它們在ES中被編入索引。在下一次調度程序運行之前,會添加5個行。現在,調度程序會選擇15行還是5行?我的理解是,如果:在選擇查詢中使用sql_last _value,那麼5將選擇,否則將選擇15。請澄清我的理解。 –

+0

@MaruthiPodila是的沒錯。如果您的sql_last_value指向最後一次更新的ID,它將始終選擇調度程序再次運行時添加的最後5行。 – Kulasangar