改变索引的权限,当索引被block
在我们日常的工作中常常需要data patching。
我在修改数据的时候遇到这样的错误:
"cause": {
"type": "cluster_block_exception",
"reason": "index [gc-test] blocked by: [FORBIDDEN/8/index write (api)];"
},
"status": 403
这时候去查看下索引的权限:
说明写入的权限被block了。需要先去更改权限
PUT /gc-test/_settings
{ "index": { "blocks": { "write": "false" } } }
再查看权限
这是我们可以去更新数据了。
比如我们想要去更该一个字段的值, 学生的名字,从Lucy改成Alllen
POST /student/_update_by_query
{
"query": {
"match": {
"student.name": "Lucy"
}
},
"script": {
"source": "ctx._source.student.name= 'Allen'"
}
}
如果数据量很大的话,避免出现timeout,需要加?wait_for_completion=false再uri上面。这个task会异步执行,只是返回给我们一个taskID。再次发送请求查看task处理的状态
GET _tasks/FxR1Lq60Q_Ob-dhPUL4ICA:252897
已经处理好了。