簡體   English   中英

如何在Logstash過濾器插件中將字符串轉換為數據字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM