Logstash jdbc 插件:如何对列使用日期过滤器?
Logstash jdbc plugin: how use a date filter for a column?
在我的 MS SQL table 中,我有一列日期存储为格式 "dd-mm-yyyy 00:00:00.000" 的字符串
例如:1999-10-06 00:00:00.000 或 2000-04-27 00:00:00.000
在导入过程中,我想将此列的值转换为日期类型。
我看到了一个叫做过滤器的功能,它可以进行这种类型的转换。
我找到了示例,但仅用于解析 Beats 带来的带正则表达式的日志全文行。
如何将此功能用于 sql 列?
例如,如何调整此 conf 文件以使其真正工作?
input {
jdbc {
jdbc_connection_string => "jdbc:localhost;"
jdbc_user => "user"
jdbc_password => "pass"
jdbc_driver_library => "C:\Program Files (x86)\jdbc\sqljdbc_6.0\enu\sqljdbc42.jar"
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
statement => "SELECT * FROM SOLD"
}
}
filter
{
date {
match => [ "DATE_COLUMN", "YYYY-MM-dd 00:00:00.000" ]
}
}
output {
elasticsearch {
hosts => "localhost:9200"
index => "indexname"
document_type => "typename"
}
}
目前此 conf 不起作用并创建此 ES 文本字段:
"date_column": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
如果您的数据库中有一个名为 myDateField 的字段,您应该在使用 JDBC 输入后获得一个同名字段{}。然后,您可以让 logstash 处理 ("filter") 并输出此数据。
logstash 中包含 50 多个过滤器(请参阅 the doc)。
要使您的字段成为日期,请使用日期{}过滤器。请注意,此过滤器通常用于设置 logstash 的“@timestamp”字段,但如果需要,您可以将日期放入不同的字段(甚至覆盖相同的字段)。
所以答案是在 小写 :
中写入列名称来制作此过滤器
filter
{
date {
match => [ "date_column", "yyyy-MM-dd HH:mm:ss.SSS" ]
}
}
并为此日期格式创建一个 elasticsearch 映射列:
PUT /index
{
"mappings": {
"type": {
"properties": {
"date_column": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss.SSS"
}
}
}
}
}
在我的 MS SQL table 中,我有一列日期存储为格式 "dd-mm-yyyy 00:00:00.000" 的字符串 例如:1999-10-06 00:00:00.000 或 2000-04-27 00:00:00.000
在导入过程中,我想将此列的值转换为日期类型。
我看到了一个叫做过滤器的功能,它可以进行这种类型的转换。 我找到了示例,但仅用于解析 Beats 带来的带正则表达式的日志全文行。
如何将此功能用于 sql 列? 例如,如何调整此 conf 文件以使其真正工作?
input {
jdbc {
jdbc_connection_string => "jdbc:localhost;"
jdbc_user => "user"
jdbc_password => "pass"
jdbc_driver_library => "C:\Program Files (x86)\jdbc\sqljdbc_6.0\enu\sqljdbc42.jar"
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
statement => "SELECT * FROM SOLD"
}
}
filter
{
date {
match => [ "DATE_COLUMN", "YYYY-MM-dd 00:00:00.000" ]
}
}
output {
elasticsearch {
hosts => "localhost:9200"
index => "indexname"
document_type => "typename"
}
}
目前此 conf 不起作用并创建此 ES 文本字段:
"date_column": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
如果您的数据库中有一个名为 myDateField 的字段,您应该在使用 JDBC 输入后获得一个同名字段{}。然后,您可以让 logstash 处理 ("filter") 并输出此数据。
logstash 中包含 50 多个过滤器(请参阅 the doc)。
要使您的字段成为日期,请使用日期{}过滤器。请注意,此过滤器通常用于设置 logstash 的“@timestamp”字段,但如果需要,您可以将日期放入不同的字段(甚至覆盖相同的字段)。
所以答案是在 小写 :
中写入列名称来制作此过滤器filter
{
date {
match => [ "date_column", "yyyy-MM-dd HH:mm:ss.SSS" ]
}
}
并为此日期格式创建一个 elasticsearch 映射列:
PUT /index
{
"mappings": {
"type": {
"properties": {
"date_column": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss.SSS"
}
}
}
}
}