2016-10-26 39 views
0

我试图在this答案中提供的方法对我的elasticsearch索引运行update by query。这是我一直在试图运行查询:通过elasticsearch中的查询更新

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

尝试“_update_by_query?is_in_stock = false”并删除脚本行,以查看问题是否为脚本 –

回答

1

找到解决方案。

原来,我不得不使用下面的脚本:

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

我想问题可能是\“假\”(字符串值),谁不希望被蒙上。

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

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

+1

嗨,我发现问题并添加了相应的答案。谢谢您的帮助! :) –

+0

是的,我看到了,我们在同一时间发布,GGWP! –