ElasticSearch - 将一个字段值复制到所有文档的其他字段

时间:2017-05-15 07:11:03

标签: elasticsearch

我们有一个字段" name"在索引中。我们最近添加了一个新字段"别名"。 我想将名称字段值复制到所有文档的新字段别名。

是否有任何更新查询可以执行此操作? 如果那是不可能的,请帮助我实现这一目标。 提前致谢

我正在尝试此查询 http://URL/index/profile/_update_by_query

{
  "query": {

        "constant_score" : {
            "filter" : {
                "exists" : { "field" : "name" }
            }
        }

  },
  "script" : "ctx._source.alias = name;"
}

在剧本中,我不知道如何给出名字字段。 我收到错误

{
  "error": {
    "root_cause": [
      {
        "type": "class_cast_exception",
        "reason": "java.lang.String cannot be cast to java.util.Map"
      }
    ],
    "type": "class_cast_exception",
    "reason": "java.lang.String cannot be cast to java.util.Map"
  },
  "status": 500
}

1 个答案:

答案 0 :(得分:2)

事实上,语法已经改变了一点点。您需要将查询修改为:

{
  "query": {

        "constant_score" : {
            "filter" : {
                "exists" : { "field" : "name" }
            }
        }

  },
  "script" : {
      "inline": "ctx._source.alias = ctx._source.name;"
  }
}

ES 6更新

使用source代替inline