2017-09-14 81 views
0

我試圖從SQL查詢添加一些數據我Elasticsearch,且目前運行的這樣一個Logstash JDBC輸入:如何在Elasticsearch中添加新的SQL行 - Logstash - Kibana?

jdbc { 
     type => "database_log" 
     jdbc_connection_string => "jdbc:sqlserver://(redacted)" 
     jdbc_user => (redacted) 
     jdbc_password => (redacted) 
     jdbc_driver_library => "D:\ELK_56\sqljdbc4.jar" 
     jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver" 
     schedule => "0 * * * *" 
     statement => "select user_id,First_Name from user_login" 

現在的問題是,像每個小時的輸入運行時,它只是增加了查詢的全部結果,大約124k行。我的意圖是添加自上次查詢以來出現的新行(每小時約3-4個),並避免重複。

我不能通過向查詢添加WHERE子句來解決它,因爲此特定表沒有日期列或任何類型的此類標識符。

有什麼辦法讓logstash或elasticsearch本身減去以前的結果,而只是添加新的行?

謝謝您的回覆。

回答

0

我知道讓Elasticsearch過濾掉重複項的唯一方法是使索引中的字段與數據庫中的user_id列一起加載索引中的_id字段。 Elasticsearch每次都必須處理和更新所有124k條記錄,但是這會消除索引中的重複條目。

你應該可以設置這個在您的Logstash的配置在這個前面的問題概括:Change ID in elasticsearch

+1

謝謝,這實際上幫助很大。用這個方法和一些查詢調整我得到了我需要的結果。乾杯! –

相關問題