建议用户配置文件 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 提示以获得更好的相关性

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