更新用户资料数据 API编辑

用户资料功能仅供 Kibana 和 Elastic 的可观察性、企业搜索和 Elastic 安全解决方案使用。单个用户和外部应用程序不应直接调用此 API。Elastic 保留随时更改或删除此功能的权利,恕不另行通知。

更新与指定唯一 ID 关联的用户资料的特定数据。

请求编辑

POST /_security/profile/<uid>/_data

先决条件编辑

要使用此 API,您必须具有以下权限之一

  • The manage_user_profile 集群权限。
  • The update_profile_data 请求中引用的命名空间的全局权限。

描述编辑

更新用户资料 API 使用 JSON 对象更新现有用户资料文档的 labelsdata 字段。新的键及其值将添加到资料文档中,冲突的键将被请求中包含的数据替换。

对于 labelsdata,内容由顶层字段进行命名空间化。The update_profile_data 全局权限授予仅更新允许的命名空间的权限。

路径参数编辑

uid
(必需,字符串) 用户资料的唯一标识符。

查询参数编辑

if_seq_no
(可选,整数) 仅当文档具有此序列号时才执行操作。参见 乐观并发控制.
if_primary_term
(可选,整数) 仅当文档具有此主项时才执行操作。参见 乐观并发控制.
refresh
(可选,枚举) 如果 true,Elasticsearch 将刷新受影响的分片以使此操作对搜索可见,如果 wait_for 则等待刷新以使此操作对搜索可见,如果 false 则不执行刷新操作。有效值:truefalsewait_for。默认值:false
uid
(必需,字符串) 用户资料的唯一标识符。

请求主体编辑

labels
(必需*,对象) 您要与用户资料关联的可搜索数据。此字段支持嵌套数据结构。在 labels 对象中,顶层键不能以下划线 (_) 开头或包含句点 (.)。
data
(必需*,对象) 您要与用户资料关联的不可搜索数据。此字段支持嵌套数据结构。在 data 对象中,顶层键不能以下划线 (_) 开头或包含句点 (.) The data 对象不可搜索,但可以使用 获取用户资料 API 检索。

*表示设置在某些情况下是必需的,但在并非所有情况下都是必需的。

响应主体编辑

成功更新用户资料数据 API 调用将返回一个 JSON 结构,指示请求已确认

{
  "acknowledged": true
}

示例编辑

以下请求更新与 u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0 匹配的 uid 的资料文档

POST /_security/profile/u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0/_data
{
  "labels": {
    "direction": "east"
  },
  "data": {
    "app1": {
      "theme": "default"
    }
  }
}

您可以更新资料数据以替换某些键并添加新键

POST /_security/profile/u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0/_data
{
  "labels": {
    "direction": "west"
  },
  "data": {
    "app1": {
      "font": "large"
    }
  }
}

如果您现在获取资料,则将返回合并的资料数据

GET /_security/profile/u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0?data=*
{
  "profiles": [
    {
      "uid": "u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
      "enabled": true,
      "last_synchronized": 1642650651037,
      "user": {
        "username": "jackrea",
        "roles": [
          "admin"
        ],
        "realm_name": "native",
        "full_name": "Jack Reacher",
        "email": "[email protected]"
      },
      "labels": {
        "direction": "west"
      },
      "data": {
        "app1": {
          "theme": "default",
          "font": "large"
        }
      },
      "_doc": {
        "_primary_term": 88,
        "_seq_no": 66
      }
    }
  ]
}