我有以下查询,试图在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

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


  • 导致以下异常:

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

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

  • 09-05 09:27