我在使用日期字段类型的Elasticsearch时有一种奇怪的体验。我已经尝试了大约7-10种不同类型的格式,单数和多数,并逐字查看并遵循了Elasticsearch文档的当前版本,但我仍然收到相同的错误。下面是当前的代码片段:
"<REDACTED>": {"type": "date", "format": "date_optional_time||strict_date_optional_time||yyyy-MM-dd'T'HH:mm:ss||yyyy-MM-dd HH:mm:ss||yyyy-MM-dd HH:mm:ss aa||yyyy-MM-dd HH:mm:ss||M/dd/yyyy HH:mm:ss aa||MM/dd/yyyy HH:mm:ss||MM/dd/yyyy HH:mm:ss aa||yyyy-MM-dd||epoch_millis"}第四种格式: yyyy-MM-dd HH:mm:ss,根据我反复收到的错误信息,匹配我当前的数据格式:
错误: elasticsearch.exceptions.RequestError: RequestError(400,'mapper_parsing_exception',“无法在id为‘字段值的...Preview:'2021-03-27 22:46:08’的文档中解析类型为date的字段[]”)
有没有人能给点建议?我将非常感谢^___^
发布于 2021-04-13 05:26:54
Elasticsearch日期格式遵循不支持aa的DateTimeFormatter spec --只有一个a来表示am/pm。
从映射中删除双a:
PUT my-index
{
"mappings": {
"properties": {
"your_date_field": {
"type": "date",
"format": "date_optional_time||strict_date_optional_time||yyyy-MM-dd'T'HH:mm:ss||yyyy-MM-dd HH:mm:ss||yyyy-MM-dd HH:mm:ss a||yyyy-MM-dd HH:mm:ss||M/dd/yyyy HH:mm:ss a||MM/dd/yyyy HH:mm:ss||MM/dd/yyyy HH:mm:ss a||yyyy-MM-dd||epoch_millis"
}
}
}
}索引应该工作得很好:
POST my-index/_doc
{
"your_date_field": "2021-03-27 22:46:08"
}发布于 2021-04-13 09:16:28
我发现了问题所在。python代码循环通过以前的日期戳格式进行检查,而不是用新的日期戳格式完全替换索引。一旦我通过删除旧的索引删除了错误的索引,代码就可以正常工作了。
关于aa,Joe Sorocin也是对的。Joda格式支持它,但只作为一个a,两个"a“不是必需的或正确的。
https://stackoverflow.com/questions/67064804
复制相似问题