【问题标题】:Unable to parse date type field in Kibana无法解析 Kibana 中的日期类型字段
【发布时间】:2017-05-09 02:54:07
【问题描述】:

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

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

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

提前致谢!

【问题讨论】:

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


    【解决方案1】:

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

    "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了解详细信息。

    我希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      我还不能添加 cmets,所以我发帖询问更多信息,然后编辑答案。

      您能发布您的地图和一份示例文档吗?

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

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

      您可以使用 .

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

      【讨论】:

      • “默认”文档的映射。 {“默认”:{“映射”:{“vox-log”:{“属性”:{“数据”:{“类型”:“字符串”},“日期时间”:{“类型”:“字符串”} } } } } }
      • 示例文档:{ "took": 74, "timed_out": false, "_shards": { "total": 1, "successful": 1, "failed": 0 }, "hits ": { "total": 1, "max_score": 1, "hits": [ { "_index": "default", "_type": "vox-log", "_id": "AVksHIL52Bkrx4u9vIi9", "_score" : 1, "_source": { "data": "\nkjhjkhkj\njjkhjkhjk\njhkjhjk", "date_time": "2016-12-21 10:46:50.119" } } ] } }
      【解决方案3】:

      这是由于缺少您的时间格式的时区信息造成的。
      您可以在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"}
      }
      

      :)

      【讨论】:

      【解决方案4】:

      我以错误的格式传递了日期。 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,这是必需的格式。

      【讨论】:

        猜你喜欢
        • 2021-01-01
        • 1970-01-01
        • 2014-04-22
        • 2018-06-10
        • 2019-06-11
        • 2022-11-14
        • 2015-08-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多