Sql server 尝试使用Logstash使Elasticsearch与SQL Server数据库保持同步会引发字段映射异常
我正在尝试使用logstash使我的SQL Server数据库与Elasticsearch保持同步。这是我的配置文件(logstash config.conf) 我的问题是:logstash如何将数据库列与Elasticsearch字段匹配?我的实际数据库查询要长得多,logstash不断抛出字段匹配错误,即使我的数据库列别名与elasticsearch字段名匹配。。下面这个让我特别困惑,因为我相信@version字段是由logstash自行生成的。。这对严格映射不起作用吗Sql server 尝试使用Logstash使Elasticsearch与SQL Server数据库保持同步会引发字段映射异常,sql-server,
elasticsearch,logstash,elastic-stack,elk,Sql Server,
elasticsearch,Logstash,Elastic Stack,Elk,我正在尝试使用logstash使我的SQL Server数据库与Elasticsearch保持同步。这是我的配置文件(logstash config.conf) 我的问题是:logstash如何将数据库列与Elasticsearch字段匹配?我的实际数据库查询要长得多,logstash不断抛出字段匹配错误,即使我的数据库列别名与elasticsearch字段名匹配。。下面这个让我特别困惑,因为我相信@version字段是由logstash自行生成的。。这对严格映射不起作用吗 "error"=&g
"error"=>{"type"=>"strict_dynamic_mapping_exception", "reason"=>"mapping set to strict, dynamic introduction of [@version] within [doc] is not allowed"}
这是运行logstash-f logstash-config.conf后的cmd输出
input {
jdbc {
jdbc_connection_string => "jdbc:sqlserver://jobDatabaseHost:port;DatabaseName=jobDBname;integratedSecurity=true"
jdbc_user => "xxxx"
jdbc_driver_library => "C:\sqljdbc_4.2.8112.200_enu\sqljdbc_4.2\enu\jre8\sqljdbc42.jar"
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
statement => "SELECT TOP (50)
JobID as jobId, JobName as jobName, JobDescription as jobDescription, JobStatus as jobStatus
from jobTable"
}
}
output {
elasticsearch {
hosts => ["http://jobhost:9200"]
index => "jobIndex"
document_type => "doc"
document_id => "%{jobId}"
user => "Christian.***@***.com"
password => "*****"
}
stdout { codec => rubydebug }
}
{
"@version" => "1",
"jobId" => 1,
"jobDescription" => "Deduction",
"jobName" => "test",
"jobStatus" => "active,
而且工作不成功
此外,我正在使用sqjljdbc 1.8、logstash 6.6.2、elasticsearch 6.6.2如何定义索引映射?看起来定义的索引映射不允许添加新属性,如
@version
索引对象字段名称将基于您已定义的映射。如果未定义,则将使用SQL列别名