查询用户 API编辑

使用 查询 DSL分页 方式检索 原生用户

获取用户 API 不同,内置用户 将被排除在结果之外。此 API 仅适用于 原生用户

请求编辑

GET /_security/_query/user

POST /_security/_query/user

先决条件编辑

  • 要使用此 API,您至少需要具有 read_security 集群权限。

描述编辑

使用此 API 以分页方式检索由 原生领域 管理的用户。您可以选择使用查询过滤结果。

请求正文编辑

您可以在请求正文中指定以下参数

query

(可选,字符串) 用于过滤要返回的用户的 查询。该查询支持查询类型的子集,包括 match_allbooltermtermsprefixwildcardexists

您可以查询与用户关联的以下公共值。

query 的有效值
username
用户的标识符。
roles
分配给用户的 角色 的角色名称数组。
full_name
用户的全名。
email
用户的电子邮件。
enabled
指定用户是否已启用。

查询参数编辑

with_profile_uid
(可选,布尔值) 确定是否检索用户的 用户配置文件 uid(如果存在)。默认为 false
from

(可选,整数) 起始文档偏移量。必须是非负数,默认为 0

默认情况下,您无法使用 fromsize 参数浏览超过 10,000 个命中项。要浏览更多命中项,请使用 search_after 参数。

size

(可选,整数) 要返回的命中项数。必须是非负数,默认为 10

默认情况下,您无法使用 fromsize 参数浏览超过 10,000 个命中项。要浏览更多命中项,请使用 search_after 参数。

sort
(可选,对象) 排序定义。您可以按 usernamerolesenabled 排序。此外,排序也可以应用于 _doc 字段以按索引顺序排序。
search_after
(可选,数组) 搜索后 定义。

响应正文编辑

此 API 返回以下顶级字段

total
找到的用户的总数。
count
响应中返回的用户数量。
users
与查询匹配的用户列表。

示例编辑

以下请求列出所有用户,假设您具有 read_security 权限

GET /_security/_query/user

成功调用将返回一个 JSON 结构,其中包含从一个或多个用户检索到的信息

{
    "total": 2,
    "count": 2,
    "users": [ 
        {
            "username": "jacknich",
            "roles": [
                "admin",
                "other_role1"
            ],
            "full_name": "Jack Nicholson",
            "email": "[email protected]",
            "metadata": {
                "intelligence": 7
            },
            "enabled": true
        },
        {
            "username": "sandrakn",
            "roles": [
                "admin",
                "other_role1"
            ],
            "full_name": "Sandra Knight",
            "email": "[email protected]",
            "metadata": {
                "intelligence": 7
            },
            "enabled": true
        }
    ]
}

此请求检索到的用户列表

如果您使用以下详细信息创建用户

POST /_security/user/jacknich
{
  "password" : "l0ng-r4nd0m-p@ssw0rd",
  "roles" : [ "admin", "other_role1" ],
  "full_name" : "Jack Nicholson",
  "email" : "[email protected]",
  "metadata" : {
    "intelligence" : 7
  }
}

成功调用将返回一个 JSON 结构

{
  "created": true
}

使用用户信息检索具有查询的用户

GET /_security/_query/user
{
    "query": {
        "prefix": {
            "roles": "other"
        }
    }
}

成功调用将返回用户的 JSON 结构

{
    "total": 1,
    "count": 1,
    "users": [
        {
            "username": "jacknich",
            "roles": [
                "admin",
                "other_role1"
            ],
            "full_name": "Jack Nicholson",
            "email": "[email protected]",
            "metadata": {
                "intelligence": 7
            },
            "enabled": true
        }
    ]
}

要检索用户 profile_uid 作为响应的一部分

GET /_security/_query/user?with_profile_uid=true
{
    "query": {
        "prefix": {
            "roles": "other"
        }
    }
}
{
    "total": 1,
    "count": 1,
    "users": [
        {
            "username": "jacknich",
            "roles": [
                "admin",
                "other_role1"
            ],
            "full_name": "Jack Nicholson",
            "email": "[email protected]",
            "metadata": {
                "intelligence": 7
            },
            "enabled": true,
            "profile_uid": "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0"
        }
    ]
}

使用 bool 查询来发出复杂的逻辑条件,并使用 fromsizesort 来帮助对结果进行分页

GET /_security/_query/user
{
  "query": {
    "bool": {
      "must": [
        {
          "wildcard": {
            "email": "*example.com" 
          }
        },
        {
          "term": {
            "enabled": true 
          }
        }
      ],
      "filter": [
        {
          "wildcard": {
            "roles": "*other*" 
          }
        }
      ]
    }
  },
  "from": 1, 
  "size": 2, 
  "sort": [
    { "username": { "order": "desc"} } 
  ]
}

电子邮件必须以 example.com 结尾

用户必须已启用

结果将被过滤,仅包含至少包含子字符串 other 的一个角色的用户

开始搜索结果的偏移量是第二个(从零开始的索引)用户

响应的页面大小为 2 个用户

结果按 username 降序排序

响应包含匹配用户的列表及其排序值

{
    "total": 5,
    "count": 2,
    "users": [
        {
            "username": "ray",
            "roles": [
                "other_role3"
            ],
            "full_name": "Ray Nicholson",
            "email": "[email protected]",
            "metadata": {
                "intelligence": 7
            },
            "enabled": true,
            "_sort": [
                "ray" 
            ]
        },
        {
            "username": "lorraine",
            "roles": [
                "other_role3"
            ],
            "full_name": "Lorraine Nicholson",
            "email": "[email protected]",
            "metadata": {
                "intelligence": 7
            },
            "enabled": true,
            "_sort": [
                "lorraine"
            ]
        }
    ]
}

排序值为 username