无法解析Kibana中的日期类型字段

时间:2016-12-23 11:38:48

标签: date amazon-web-services elasticsearch kibana kibana-4

我不熟悉弹性搜索和kibana 。 我想以下列格式将_source字段解析为date类型:“yyyy-mm-dd hh:mm:ss”,但没有运气。但是,如果field的值为“yyyy-mm-hh”格式,则该字段将被解析为日期类型。 我尝试在kibana的高级设置页面中修改dateFormat:scaled字段,但没有运气。 以下是我的用例:

{
    "name": "Amy",
    "time_of_creation": "2016-12-21 10:46:55"
}

在我的情况下,{cnana} "time_of_creation"字段被解析为String,我想将此字段解析为"date"类型。

提前致谢!

4 个答案:

答案 0 :(得分:0)

我还无法添加评论,所以我发帖要求提供更多信息,然后编辑答案。

您可以发布您的地图和一份示例文件吗?

如果您不知道,这就是您获取映射的方式:

curl -XGET "http://localhost:9200/my_index/_mapping"

您可以获得一份示例文档。

curl -XGET "http://localhost:9200/my_index/_search"

答案 1 :(得分:0)

这是由于缺少时间格式的时区信息造成的 您可以在the official guide上查看相关解决方案 时区信息的时间应如下所示:

    2016-11-11T11:11:11.111+0800

示例代码:

PUT my_index {
"mappings": {
    "my_type": {
      "properties": {
        "date": {
          "type": "date" 
        }
      }
    }
  } 
}

PUT my_index/my_type/1 { "date": "2015-01-01" } 

PUT my_index/my_type/2 { "date": "2015-01-01T12:10:30Z" } 

PUT my_index/my_type/3 { "date": 1420070400001 } 

GET my_index/_search {   
    "sort": { "date": "asc"}
}

:)

答案 2 :(得分:0)

您的解析格式错误。你正在使用这个:

“yyyy-mm-dd hh:mm:ss”

请注意,您对月份和分钟使用相同的字母“mm”。几个月你必须使用大写“M”。另外,请记住,如果您使用“hh”指定小时数,则表示您正在解析12小时格式。如果您需要24小时格式,请改用“HH”。例如,此映射将以24小时格式正确解析日期:

"time_of_creation": {
  "type": "date",
  "format": "yyyy-MM-dd HH:mm:ss"
}

您可以查看有关此主题的the documentation了解详情。

我希望这会有所帮助。

答案 3 :(得分:0)

我正以错误的格式传递日期。 Kibana也需要有日期的时区。所以我使用以下代码转换了我的日期字符串,然后在elasticsearch中发送数据。它现在正在以date类型的形式阅读该字段。

var date = new Date("2016-12-21 10:46:50.119");
var dateStr = date.toISOString()

dateStr现在是2016-12-21T05:16:50.119Z,这是必需的格式。