尝试在 elasticsearch 中使用 Date 时出现异常-dsl.py 持久性 api

Exception when trying to use Date in elasticsearch-dsl.py persistence api

我正在尝试使用持久性 API,使用 elasticsearch-dsl 版本 6.2.1,如下所示:

class MyClass(Document):
    start = Date(format='dd-MM-yyyy HH:mm:ss:SSS')
    stop = Date(format='dd-MM-yyyy HH:mm:ss:SSS')

当我打电话给MyClass.init() 我(通过 Kibana)看到映射确实如我所料:

    "start": {
      "type": "date",
      "format": "dd-MM-yyyy HH:mm:ss:SSS"
    },
    "stop": {
      "type": "date",
      "format": "dd-MM-yyyy HH:mm:ss:SSS"
    }

我有变量 my_instance,它是 MyClass 的一个实例。 my_instance.startmy_instance.stop 保存像这样的字符串 '15-06-2018 02:54:05:382'

当我调用 my_instance.save() 时,出现以下异常:

elasticsearch_dsl.exceptions.ValidationException: {'start': 
[ValidationException("Could not parse date from the value ('15-06-2018 
02:54:05:281')", ValueError('Unknown string format:', '15-06-2018 
02:54:05:281'))], 'stop': [ValidationException("Could not parse date from the 
value ('15-06-2018 02:54:05:382')", ValueError('Unknown string format:', '15- 
06-2018 02:54:05:382'))]}

我做错了什么?

遗憾的是elasticsearch-dsl目前仅支持 ISO 格式的日期。如果您想使用任何其他格式,您需要自己指定(反)序列化。