首页 文章

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

提问于
浏览
0

我有一个类型为'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

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

    您还需要更改脚本的结构

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

相关问题