2017-09-14 79 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

谢谢,这实际上帮助很大。用这个方法和一些查询调整我得到了我需要的结果。干杯! –

相关问题