gpt4 book ai didi

mysql - Logstash转换输出日期格式

转载 作者:行者123 更新时间:2023-12-03 02:28:47 25 4
gpt4 key购买 nike

我正在使用logstash从mysql获取数据并将它们传递给elasticsearch。
不幸的是,日期格式默认解析为zulu时间。
需要获取日期时间格式的数据
像没有t和z的yyyy-mm-dd H:i:s。下面是我的logstash配置

jdbc {
jdbc_driver_library => "/etc/mysql/driver/mysql-connector-java-5.1.48/mysql-connector-java-5.1.48-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/db"
jdbc_user => root
jdbc_password => "secret"
tracking_column => "id"
use_column_value=> true
statement => "SELECT * FROM db.logs;"
schedule => " * * * * * *"
}

}

output {
elasticsearch {
document_id=> "%{id}"
document_type => "_doc"
index => "logs"
hosts => "http://localhost:9200"
sniffing => true
}

stdout{
codec => rubydebug
}
}

filter {

date {
match => ["date", "yyyy-MM-dd HH:mm:ss"]
}
}

在这种情况下,我收到了 "_dateparsefailure"
我还尝试将mutate gsub和convert一起使用,但未成功。

现在,结果为 "date" => "2020-02-28T09:18:18.000Z",但预期结果为 2020-02-28 9:19:18

最佳答案

日期过滤器很有用,但并非总是最佳选择。

首先,您可以尝试使用此工具查找适合您日期的格式:
https://esddd.herokuapp.com/

如果它不适用于日期过滤器,则必须将模板添加到elasticsaerch。

为此,您必须创建一个像这样的json文件:

{                                                                                                                                                                                                                  
"index_patterns": [
"YOUR INDEX PATTERN"
],
"order": 0,
"mappings": {
"dynamic_templates": [
{
"timestamp_fix": {
"path_match": "THE NAME OF YOUR DATE FIELD",
"mapping": {
"type": "date",
"format": "FORMAT OF THE DATE YOU WANT"
}
}
}
]
}

然后必须在logstash输出中输入以下参数:
 template => "PATH TO YOUR JSON FILE"
template_name => "template_fix"
template_overwrite => true

如此处的logstash文档中所述:
https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html

让我知道它是否有效!祝好运!

关于mysql - Logstash转换输出日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60453574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com