Elasticsearch 7:无法解析日期

Elasticsearch 7: Cant parse date

我有一个带有日期字段的映射的 elasticsearch 索引

"datetime": {
                "type": "date",
                "format": "date_optional_time"
            }

但是当我尝试传入

'05/09/2019 11:43:09 AM'

并对其进行索引,我得到

elasticsearch.exceptions.RequestError: RequestError(400, u'mapper_parsing_exception', u"failed to parse field [datetime] of type [date] in document with id 'VhhGBWsBeH-i3pqE8QBW'")

我试过了

"datetime": {
               "type": "text"
            }

这当然有效。

我做错了什么?对于像 05/09/2019 11:43:09 AM 这样的日期,我应该使用哪种日期格式?

@Kamal

非常感谢您的帮助。还有一件事,上面的格式对于 '05/09/2019 01:00:37 PM' 或任何带有 PM 的值都失败了。我试过了

"datetime": {
                "type": "date",
                "format": "MM/dd/yyyy HH:mm:ss a||MM/dd/yyyy HH:mm:ss p"
            }

但我明白了

"Invalid format: [MM/dd/yyyy HH:mm:ss p]: Pad letter 'p' must be followed by valid pad pattern: MM/dd/yyyy HH:mm:ss p"

如果我尝试

"datetime": {
                "type": "date",
                "format": "MM/dd/yyyy HH:mm:ss aa"
            }

我得到

elasticsearch.exceptions.RequestError: RequestError(400, u'illegal_argument_exception', u'Invalid format: [MM/dd/yyyy HH:mm:ss aa]: Too many pattern letters: a')

那是因为您提到的日期格式不符合基于 ISO 8601 标准的 date_optional_time

来自与 date_optional_time 相关的 elasticsearch link,其中提到了以下评论:

date_optional_time or strict_date_optional_time

A generic ISO datetime parser where the date is mandatory and the time is optional.

基于 ISO 8601,以下是一些有效值:

  • yyyy-MM-ddTHH:mm:ss
  • yyyy-MM-ddTHH:mm
  • yyyy-MM-ddTHH:mm:ss.SSSSSSSSS.

另请注意,ISO 8601 使用 24 小时日期格式

因此查看您的示例,以下日期值适用于此。

POST <your_index_name>/_doc/1
{
  "datetime": "2019-05-09T13:30:00"
}

解决方案:

您要查找的格式是 MM/dd/yyyy hh:mm:ss add/MM/yyyy hh:mm:ss a(我留给您基于根据您的要求,两种格式都可以。

下面是您的映射方式。

PUT <your_index_name>
{  
   "mappings":{  
      "properties":{  
         "datetime":{  
            "type":"date",
            "format":"date_optional_time||MM/dd/yyyy hh:mm:ss a"
         }
      }
   }
}

下面的现在可以工作了:

POST <your_index_name>/_doc/1
{
  "datetime": "05/09/2019 11:43:09 AM"
}

希望对您有所帮助!