gpt4 book ai didi

java - ElasticSearch无法解析日期字段

转载 作者:行者123 更新时间:2023-12-03 01:13:05 32 4
gpt4 key购买 nike

我有以下查询,试图在Kibana Dev Tools中的Elasticsearch 5.6上运行:

{
"query": {
"bool": {
"filter": {
"bool": {
"must": [
{
"range": {
"inserted": {
"gt": "Thu Aug 20 09:01:31 +0100 2020"
}
}
}
]
}
}
}
}
}
我得到的答复是:
{
"error": {
"root_cause": [
{
"type": "parse_exception",
"reason": "failed to parse date field [Thu Aug 20 09:01:31 +0100 2020] with format [EEE MMM dd HH:mm:ss ZZZ yyyy]"
}
],
"type": "search_phase_execution_exception",
"reason": "all shards failed",
"phase": "can_match",
"grouped": true,
日期时间格式对我来说看起来正确,我在做什么错呢?

最佳答案

简而言之:'EEE MMM dd HH:mm:ss Z yyyy'是正确的格式。
详细信息:

  • Elastic Search使用Joda库来格式化DateTime。

  • 摘自 ES Docs

    Completely customizable date formats are supported. The syntax for these is explained in the Joda docs.


  • 尝试使用Joda库使用您正在使用的“EEE MMM dd HH:mm:ss ZZZ yyyy”模式来格式化DateTime。编程语言为 Java

  • DateTimeFormatter formatter = DateTimeFormat.forPattern("EEE MMM dd HH:mm:ss ZZZ yyyy");
    DateTime dateTime = formatter.parseDateTime("Thu Aug 20 09:01:31 +0100 2020");

    导致以下异常:

    Exception in thread "main" java.lang.IllegalArgumentException: Invalidformat: "Thu Aug 20 09:01:31 +0100 2020" is malformed at "+0100 2020"atorg.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:866)


    推导:'ZZZ'定义的格式有问题
    JodaDoc

    Z time zone offset/id zone -0800


  • 根据调查,正确格式为“EEE MMM dd HH:mm:ss Z yyyy”,而不是“EEE MMM dd HH:mm:ss ZZZ yyyy”。
  • 考虑映射中的#3定义格式,例如

  • {
    "mappings": {
    "_doc":{
    "properties": {
    "inserted":{
    "type": "date",
    "format": "EEE MMM dd HH:mm:ss Z yyyy"
    }
    }
    }
    }
    }

    关于java - ElasticSearch无法解析日期字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63536502/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com