Elasticsearch

日期欄位顯示為整數

  • July 24, 2017

我有一個Elastic Stack伺服器 (on Hyper-v),它通過logstash exec命令攝取數據並對其執行分析。除了顯示為數字的日期欄位外,一切都執行良好。

我如何獲得logstashElasticsearch辨識Kibana欄位 sa date 而不是數字?

數據Unix epochmilliseconds.


程式碼:

文件輸出的數據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 欄位,看看是否可以解決問題。

引用自:https://serverfault.com/questions/862314