Elasticsearch将字符串字段转换为日期

时间:2017-08-25 06:55:29

标签: elasticsearch

我有一个带有'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 个答案:

答案 0 :(得分:0)

您不需要在脚本中创建Date类型,只需将值分配给posted字段,Elasticsearch将在索引操作发生时执行其余操作。

您还需要更改脚本的结构

"script": {
  "inline": "ctx._source['posted'] = ctx._source.foo"
}