建议用户配置文件 API

编辑

用户配置文件功能仅供 Kibana 和 Elastic 的可观测性、企业搜索和 Elastic 安全解决方案使用。个人用户和外部应用程序不应直接调用此 API。Elastic 保留在未来版本中更改或删除此功能的权利,恕不另行通知。

获取与指定搜索条件匹配的用户配置文件的建议。

请求

编辑

GET /_security/profile/_suggest

POST /_security/profile/_suggest

先决条件

编辑

要使用此 API,您必须至少具有 read_security 集群权限(或更高的权限,例如 manage_user_profilemanage_security)。

查询参数

编辑
data
(可选,字符串)以逗号分隔的列表,用于筛选配置文件文档的 data 字段。要返回所有内容,请使用 data=*。要返回内容的子集,请使用 data=<key> 来检索指定 <key> 下嵌套的内容。默认为不返回任何内容。

请求正文

编辑
name
(可选,字符串)用于匹配 用户配置文件文档中与名称相关的字段的查询字符串。与名称相关的字段是用户的 usernamefull_nameemail
size
(可选,整数)要返回的配置文件数量。默认为 10
data
(可选,字符串)以逗号分隔的列表,用于筛选配置文件文档的 data 字段。它的工作方式与 data 查询参数相同。

data 同时指定为查询参数和请求正文字段是错误的。

hint

(可选,对象)用于提高建议结果相关性的额外搜索条件。与指定提示匹配的配置文件在响应中排名更高。但是,不匹配提示不会将配置文件从响应中排除,只要它匹配 name 字段查询即可。

hint 的属性
uids
(可选,字符串列表)要匹配的配置文件 UID 列表。
labels
(可选,对象)用于匹配配置文件的 labels 部分的单个键值对。键必须是字符串,值必须是字符串或字符串列表。如果配置文件匹配至少一个字符串,则认为它匹配。

响应正文

编辑
total
(对象)有关匹配配置文件数量的元数据。
took
(整数)Elasticsearch 执行请求所花费的毫秒数。
profiles
(对象数组)与搜索条件匹配的配置文件文档列表,按相关性排序。

示例

编辑

以下请求获取与名称相关字段匹配 jack 的配置文件文档的建议。它指定 uidslabels 提示以获得更好的相关性

resp = client.security.suggest_user_profiles(
    name="jack",
    hint={
        "uids": [
            "u_8RKO7AKfEbSiIHZkZZ2LJy2MUSDPWDr3tMI_CkIGApU_0",
            "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0"
        ],
        "labels": {
            "direction": [
                "north",
                "east"
            ]
        }
    },
)
print(resp)
const response = await client.security.suggestUserProfiles({
  name: "jack",
  hint: {
    uids: [
      "u_8RKO7AKfEbSiIHZkZZ2LJy2MUSDPWDr3tMI_CkIGApU_0",
      "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
    ],
    labels: {
      direction: ["north", "east"],
    },
  },
});
console.log(response);
POST /_security/profile/_suggest
{
  "name": "jack",  
  "hint": {
    "uids": [  
      "u_8RKO7AKfEbSiIHZkZZ2LJy2MUSDPWDr3tMI_CkIGApU_0",
      "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0"
    ],
    "labels": {
      "direction": ["north", "east"]  
    }
  }
}

配置文件的与名称相关的字段必须匹配 jack,才能将其包含在响应中。

uids 提示包括用户 jackspajacknich 的配置文件 UID。

如果配置文件的 direction 标签匹配 northeast,则 labels 提示会将配置文件排名更高。

API 返回

{
  "took": 30,
  "total": {
    "value": 3,
    "relation": "eq"
  },
  "profiles": [
    {
      "uid": "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0",
      "user": {
        "username": "jacknich",    
        "roles": [ "admin", "other_role1" ],
        "realm_name": "native",
        "email" : "[email protected]",
        "full_name": "Jack Nicholson"
      },
      "labels": {
        "direction": "north"
      },
      "data": {}
    },
    {
      "uid": "u_8RKO7AKfEbSiIHZkZZ2LJy2MUSDPWDr3tMI_CkIGApU_0",
      "user": {
        "username": "jackspa",    
        "roles": [ "user" ],
        "realm_name": "native",
        "email" : "[email protected]",
        "full_name": "Jack Sparrow"
      },
      "labels": {
        "direction": "south"
      },
      "data": {}
    },
    {
      "uid": "u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
      "user": {
        "username": "jackrea",    
        "roles": [ "admin" ],
        "realm_name": "native",
        "email" : "[email protected]",
        "full_name": "Jack Reacher"
      },
      "labels": {
        "direction": "west"
      },
      "data": {}
    }
  ]
}

用户 jacknich 的排名最高,因为配置文件同时匹配 uidslabels 提示

用户 jackspa 的排名第二,因为配置文件仅匹配 uids 提示

用户 jackrea 的排名最低,因为配置文件不匹配任何提示。但是,它从响应中排除,因为它匹配 name 查询。