在elasticsearch中按查询更新

时间:2016-10-26 10:35:46

标签: elasticsearch

我正在尝试使用this回答中提供的方法在弹性搜索索引上运行update by query。这是我一直试图运行的查询:

curl -XPOST 'localhost:9200/my_index/_update_by_query' -d '
{
  "query":{
    "match":{
      "latest_uuid":"d56ffe2095f511e6bcdd0acbdf0298e3"
    }
  },
  "script" : "ctx._source.is_in_stock = \"false\";"
}'

但我一直收到以下错误:

{
    "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
}

我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

找到了解决方案。

原来我必须使用以下脚本:

"script":{"inline":"ctx._source.is_in_stock = false"}

答案 1 :(得分:0)

我认为问题可能是不想被投射的“假”(字符串值)。

curl -XPOST 'localhost:9200/my_index/_update_by_query' -d '
{
  "query":{
    "match":{
      "latest_uuid":"d56ffe2095f511e6bcdd0acbdf0298e3"
    }
  },
  "script" : "ctx._source.is_in_stock = false;"
}'

你可以先试试。等待你的反馈! :)