亲,只收二进制

updateByQuery 批量更新问题

Elasticsearch | 作者 唐启胤 | 发布于2019年08月29日 | 阅读数:6866

请教下大家:
$client = Elasticsearch::create()->setHosts(self::$host)->build();       
$data = User::select('uid')
->where(['monitor.is_del'=>'y','group_id'=>200])
->chunk(3, function($r) use ($client){
foreach($r as $key=>$value){
$params = [
'index' => 'vv_uc',
'type' => 'article',
'conflicts' => 'proceed',
'body' => [
'query' => [
'bool' => [
'must' => [
'term' => [
'user_id' => intval($value['uid'])
]
]
]
],
'script' => [
'lang' => 'painless',
'inline' => "ctx._source.is_publish= params.value" ,
'params' => [
'value' => 0
]
]
]
];

$res = $client->updateByQuery($params);dd($res);
}
});
以上代码会报错:{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"script_lang not supported [painless]"}],"type":"illegal_argument_exception","reason":"script_lang not supported [painless]"},"status":400}400
 
请教下 这是为什么啊  是哪里错了,我该如何修正?
 
已邀请:

Ombres

赞同来自: 唐启胤

异常很明显了,提示不支持painless
1. 检查使用的es版本是否支持painless
2. 检查lang-painless模块在节点启动时是否成功加载
3. 检查modules文件下是否有lang-painless文件夹
 

要回复问题请先登录注册