[英]How to convert a string to data field in logstash filter plugin
我是ELK堆棧的新手。 在過去一周內探索logstash和彈性搜索。 我發現很難將時間戳記(默認視為字符串類型)轉換為日期類型字段。 此字符串“ Thu May 18 06:39:44 CEST 2017”表示工具日志中的時間戳,該日志希望使用logstash過濾器Date插件將此字符串轉換為date字段。 我不知道該怎么做。 任何建議或幫助,將不勝感激。 謝謝 !
filter {
csv {
columns =>["Make","Color","Price","Sold"]
separator =>","
}
date
{
match => ["Sold", "DD-MM-YYYY"] # Not sure how to match timestamp in log file to convert to date type.
target => "Sold"
}
mutate{
convert => ["Price","float"]
}
}
//假設我的csv文件包含以下日志。 時間戳記的最后一個字段iPhone,銀,260,2017年9月7日星期四11:05:07
iPhone,gold,400,2017年10月7日星期四12:05:07
首先通過以下命令設置索引。 (...用其余的列及其類型替換。請參見Elasticsearch Put Mapping )
PUT date
{
"mappings": {
"date": {
"properties": {
...,
"TimeStamp": {
"type": "date",
"format": "EEE MMM dd HH:mm:ss zzz yyyy"
},
...
}
}
}
}
現在,您可以繼續使用logstash將數據推送到ES中。 從logstash配置文件中刪除日期過濾器。 ES會將字符串解析為日期。
注意:在使用示例數據進行測試時,我意識到CEST
不被接受CEST
區。 我想您將需要用CST替換CEST。 這種解析存在一些問題, 請參閱 。
如果您的數據中的時區固定為CEST,則可以解決此問題:
PUT date
{
"mappings": {
"date": {
"properties": {
...,
"TimeStamp": {
"type": "date",
"format": "EEE MMM dd HH:mm:ss 'CEST' yyyy"
},
...
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.