建议用户配置文件 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。

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

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 查询。