我试图让 Elasticsearch 将格式中的字符串识别yyyy-MM-dd HH:mm:ss
为日期字段。我创建了一个动态日期格式并将其应用于默认映射。当我索引我的第一种类型的文档时,它工作得很好 - 数据采用这种格式的任何新字段都会被初始化为日期字段。
当我尝试创建新类型的文档时出现问题,但日期格式字段的名称与我的第一个类型相同。这些失败并出现格式错误的日期错误。
下面是一组用于演示的 Kibana 命令示例:
DELETE /datetest
PUT /datetest
PUT /datetest/_mapping/_default_
{
"dynamic_date_formats" : ["yyyy-MM-dd HH:mm:ss"]
}
PUT /datetest/doc/1
{
"date" : "2015-01-01 12:00:00"
}
# This one works fine
PUT /datetest/otherdoc/1
{
"otherdate" : "2015-01-01 12:00:00"
}
# This one does not
PUT /datetest/otherdoc/2
{
"date" : "2015-01-01 12:00:00"
}
最后一个命令给出了这个错误:
"Invalid format: \"2015-01-01 12:00:00\" is malformed at \" 12:00:00\""
我知道不同类型中具有相同名称的字段必须具有相同的数据类型,但在这种情况下,我希望它们具有相同的数据类型 - 日期。我可以为每种新类型手动创建映射,但我希望它能够自动支持添加到我的源数据中的新类型。这似乎是动态日期格式应该做的事情。我在这里做错了吗?