📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

注意:POST /_security/role API 在 Easysearch 中未实现。请使用 PUT /_security/role/{name} API 来创建角色。

API 说明 #

POST /_security/role 端点在 Easysearch 中未实现。调用此端点将返回 501 Not Implemented 错误。

替代方法 #

要创建安全角色,请使用 PUT /_security/role/{name} API:

PUT /_security/role/{role_name}

使用 PUT 创建角色 #

PUT /_security/role/my_role
{
  "cluster": ["cluster:monitor/health"],
  "indices": [
    {
      "names": ["logs-*"],
      "privileges": ["READ_UT"]
    }
  ],
  "description": "我的自定义角色"
}

支持的 HTTP 方法 #

对于 /_security/role 端点,Easysearch 支持以下方法:

方法端点描述
GET/_security/role获取所有角色
GET/_security/role/{name}获取指定角色
PUT/_security/role/{name}创建或更新角色
DELETE/_security/role/{name}删除角色
PATCH/_security/role/{name}部分更新角色
POST/_security/role未实现

请求体结构 #

使用 PUT 创建角色时,请求体包含以下字段:

{
  "cluster": ["<集群权限>"],
  "indices": [
    {
      "names": ["<索引模式>"],
      "privileges": ["<索引权限>"],
      "query": "<文档级安全查询>",
      "field_security": ["<可访问字段>"],
      "field_mask": ["<隐藏字段>"]
    }
  ],
  "description": "<角色描述>"
}

错误响应 #

如果尝试使用 POST 方法:

POST /_security/role

将返回:

501 Not Implemented
{
  "status": 501,
  "error": "Not implemented"
}

完整示例 #

创建数据读取角色 #

PUT /_security/role/data_reader
{
  "cluster": ["cluster:monitor/health"],
  "indices": [
    {
      "names": ["products-*", "orders-*"],
      "privileges": ["READ_UT", "indices:data/read/search"]
    }
  ],
  "description": "读取产品和订单数据的角色"
}

创建管理员角色 #

PUT /_security/role/custom_admin
{
  "cluster": ["*"],
  "indices": [
    {
      "names": ["*"],
      "privileges": ["*"]
    }
  ],
  "description": "自定义管理员角色"
}

参考文档 #

请参考 创建或更新安全角色 文档了解完整的参数说明和示例。

注意事项 #

  1. 使用 PUT 而非 POST:创建角色必须使用 PUT 方法
  2. 指定角色名:角色名称必须在 URL 路径中指定
  3. 权限要求:创建角色需要相应的安全权限
  4. 配置初始化:安全配置必须已初始化