改变索引的权限,当索引被block.error: index [XXX] blocked by: [FORBIDDEN/8/index write (api)];

改变索引的权限,当索引被block

在我们日常的工作中常常需要data patching。
我在修改数据的时候遇到这样的错误:

"cause": {
        "type": "cluster_block_exception",
        "reason": "index [gc-test] blocked by: [FORBIDDEN/8/index write (api)];"
      },
      "status": 403

这时候去查看下索引的权限:
改变索引的权限,当索引被block.error: index [XXX] blocked by: [FORBIDDEN/8/index write (api)];_第1张图片
说明写入的权限被block了。需要先去更改权限

PUT /gc-test/_settings
{ "index": { "blocks": { "write": "false" } } }

再查看权限
改变索引的权限,当索引被block.error: index [XXX] blocked by: [FORBIDDEN/8/index write (api)];_第2张图片
这是我们可以去更新数据了。
比如我们想要去更该一个字段的值, 学生的名字,从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

改变索引的权限,当索引被block.error: index [XXX] blocked by: [FORBIDDEN/8/index write (api)];_第3张图片
已经处理好了。

你可能感兴趣的:(elasticsearch,java,开发语言,cluster_block,esdatapatching)