我正在尝试使用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
}
我在这里做错了什么?
答案 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;"
}'
你可以先试试。等待你的反馈! :)