我正在尝试让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\""
我知道不同类型中具有相同名称的字段必须具有相同的数据类型,但是在这种情况下,我希望它们具有相同的数据类型-日期。我可以为每种新类型手动创建映射,但是我希望它自动支持添加到我的源数据中的新类型。这似乎是动态日期格式应该执行的操作。我在这里做错什么了吗?
我将创建一个自定义动态模板。像这样:
PUT /datetest/_mapping/_default_
{
"date_detection" : true,
"dynamic_templates" : [
{
"dates" : {
"match" : ".*date.*",
"mapping" : {
"type" : "date",
"format" : 'yyyy-MM-dd HH:mm:ss'
}
}
}
]
}
刚刚尝试过。它似乎有效。我希望这有帮助 :)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句