我有一个带有'document'类型的索引。它有一个字符串类型字段,名称为“date”,条目格式为“MMM dd,yyyy hh:mm:ss a”。
我希望将此字段的数据类型从字符串转换为日期,这是不可能的。 因此,我修改了映射以添加“date”类型和格式的“已发布”字段。我现在需要将值更改为日期对象后,将值从日期字段复制到已发布字段。我尝试了以下更新查询
POST /my-index/document/_update_by_query
{
"query" : {
"match_all" : {}
},
"script": "ctx._source['posted'] = new Date().parse(\"MMM dd, yyyy hh:mm:ss a\",ctx._source['date'])"
}
但它给了我这个错误,
java.lang.String cannot be cast to java.util.Map
我哪里错了?
答案 0 :(得分:0)
您不需要在脚本中创建Date
类型,只需将值分配给posted
字段,Elasticsearch将在索引操作发生时执行其余操作。
您还需要更改脚本的结构
"script": {
"inline": "ctx._source['posted'] = ctx._source.foo"
}