我有一个类型为'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
我哪里错了?
1 回答
您不需要在脚本中创建
Date
类型,只需将值分配给posted
字段,Elasticsearch将在索引操作发生时执行其余操作 .您还需要更改脚本的结构