Документы не обновляются, а создаются заново вместо обновления документа.
COMPANY_ID - это уникальный столбец.
SAMPLE DATA
COMPANY_NAME, LOGO_EXT,COMPANY_ID
ABC LIMITED, JPG, ABC000001
XYZ LIMITED, PNG, ABC000002
AAA LLC ,, ABC000003
Я могу создать индекс идокументы.
Проблема заключается в том, что при обновлении индекса создается документ, а не обновляется. Например, ДО ABC LIMITED, JPG, ABC000001
ПОСЛЕ ABCD LIMITED, JPG, ABC000001
Поэтому необходимо обновлять только COMPANY_NAME.
1. Успешно удалось создать индекс, используя следующий код: -
BAT FILE
cd C: \ logstash-7.3.1 \ bin logstash -f C: \ logstash.conf
C: \ logstash.conf ФАЙЛ
input {
jdbc {
jdbc_driver_library => "C:\sqljdbc_7.4\enu\mssql-jdbc-7.4.1.jre8.jar"
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_connection_string => "jdbc:sqlserver://;user=;password=;"
jdbc_user => ""
jdbc_password => ""
statement => "SELECT COMPANY_NAME,LOGO_EXT,COMPANY_ID from dbo.CompanyMaster WITH(NOLOCK) ORDER BY COMPANY_NAME"
}
}
filter {}
output {
stdout {
codec => json_lines
}
elasticsearch {
hosts => "http://localhost:9200"
index => "companylistindex"
document_id => "%{COMPANY_ID}"
action => index
}
}
2. Код обновления
input {
jdbc {
jdbc_driver_library => "C:\sqljdbc_7.4\enu\mssql-jdbc-7.4.1.jre8.jar"
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_connection_string => "jdbc:sqlserver://;user=;password=;"
jdbc_user => ""
jdbc_password => ""
statement => "SELECT COMPANY_NAME,LOGO_EXT,COMPANY_ID from dbo.CompanyMaster WITH(NOLOCK) WHERE ModifiedOn>'2019-11-01'"
}
}
filter {}
output {
stdout {
codec => json_lines
}
elasticsearch {
hosts => "http://localhost:9200"
index => "companylistindex"
document_id => "%{COMPANY_ID}"
}
}
Пожалуйста, помогите мне обновить документ.
Примечание. Обновлять нужно только COMPANY_NAME или LOGO_EXT, если они отличаются. COMPANY_ID - уникальный столбец.