日期欄位顯示為整數
我有一個
Elastic Stack
伺服器 (onHyper-v
),它通過logstash
exec
命令攝取數據並對其執行分析。除了顯示為數字的日期欄位外,一切都執行良好。我如何獲得
logstash
或Elasticsearch
辨識Kibana
欄位 sa date 而不是數字?數據
Unix epoch
是milliseconds
.程式碼:
文件輸出的數據
python
是有JSON
格式的。在它命中之前不會進行真正的處理elasticsearch
。Logstash 配置:
input { exec { command => "/home/elliot/BullhornConnector.py JobOrder isOpen,webResponses,submissions,sendouts,interviews,placements,address,numOpenings,employmentType,owner,title,clientCorporation" interval => 60 codec => json tags => ["JobOrder"] } exec { command => "/home/elliot/BullhornConnector.py Lead owner,leadSource,firstName,lastName,status,dateAdded" interval => 60 codec => json tags => ["Lead"] } exec { command => "/home/elliot/BullhornConnector.py Opportunity owner,isOpen,dealValue,weightedDealValue,clientCorporation,status" interval => 60 codec => json tags => ["Opportunity"] } } output { elasticsearch { hosts => ["localhost:9200"] } stdout { codec => rubydebug } }
螢幕截圖:
謝謝!
如果我正確閱讀了 ElasticSearch 文件https://www.elastic.co/guide/en/elasticsearch/reference/current/date.html
JSON doesn’t have a date datatype, so dates in Elasticsearch can either be: strings containing formatted dates, e.g. "2015-01-01" or "2015/01/01 12:10:30". a long number representing milliseconds-since-the-epoch. an integer representing seconds-since-the-epoch.
因此,表示為“數字”數據類型的 dateAdded 欄位是合乎邏輯的:Elasticsearch 只是將 JSON 數字轉換為 ES 數字。
如果我查看自己的 ELK 實例,我發現“時間戳”欄位表示為“日期”數據類型。它由logstash自動完成。
在幕後,logstash 管理一個“映射模板”來定義 ES 欄位數據類型。在您的情況下,它天真地從 JSON 轉換日期類型,在時間戳的情況下,它知道它是一個日期,因此明確定義它。
所以你需要做的是定義一個映射模板並使用logstash將它與你的數據一起推送到ES。
ES 映射文件在這裡https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html,Logstash可以使用彈性搜尋輸出中的 manage_template 和模板管理它https://www.elastic.co/指南/en/logstash/current/plugins-outputs-elasticsearch.html#plugins-outputs-elasticsearch-template。AS 映射介紹https://www.elastic.co/blog/found-elasticsearch-mapping-introduction。
您還可以查看實際使用的映射
curl -XGET 'localhost:9200/<index>/_mapping?pretty'
我在這裡猜測,因為我不熟悉您所說的平台和程序。但是,在您的螢幕截圖中,您說您將數據類型更改為持續時間,但看起來數據類型仍然是“數字”,而“格式”是持續時間。如果我不得不繼續猜測,我會說您的平台仍在嘗試將您的欄位序列化為數字,因為它的數據類型仍然是“數字”。將該類型更改為“日期”,例如螢幕截圖頂部的 @timestamp 欄位,看看是否可以解決問題。