ユーザークエリAPI
ネイティブユーザーをクエリDSLを使用してページネーション形式で取得します。
get user apiとは異なり、組み込みユーザーは結果から除外されます。このAPIはネイティブユーザー専用です。
リクエスト
GET /_security/_query/user
POST /_security/_query/user
前提条件
- このAPIを使用するには、少なくとも
read_security
クラスター権限が必要です。
説明
このAPIを使用して、ネイティブレルムによって管理されているユーザーをページネーション形式で取得します。オプションで、クエリを使用して結果をフィルタリングできます。
リクエストボディ
リクエストボディに次のパラメータを指定できます:
query
- (オプション、文字列)返すユーザーをフィルタリングするためのクエリ。クエリは、
match_all
、bool
、term
、terms
、match
、ids
、prefix
、wildcard
、exists
、range
、およびsimple query string
を含むクエリタイプのサブセットをサポートします。
ユーザーに関連付けられた次の公開値をクエリできます。- `````username
- ユーザーの識別子。
roles
- ユーザーに割り当てられたロールのロール名の配列。
full_name
- ユーザーのフルネーム。
email
- ユーザーのメールアドレス。
enabled
- ユーザーが有効かどうかを指定します。
from
- (オプション、整数)開始ドキュメントオフセット。非負である必要があり、デフォルトは
0
です。
デフォルトでは、from
およびsize
パラメータを使用して10,000件を超えるヒットをページングすることはできません。より多くのヒットをページングするには、search_after
パラメータを使用します。 size
- (オプション、整数)返すヒットの数。負であってはならず、デフォルトは
10
です。
デフォルトでは、from
およびsize
パラメータを使用して10,000件を超えるヒットをページングすることはできません。より多くのヒットをページングするには、search_after
パラメータを使用します。 sort
- (オプション、オブジェクト)ソート定義。
username
、roles
、またはenabled
でソートできます。さらに、インデックス順序でソートするために_doc
フィールドにもソートを適用できます。 search_after
- (オプション、配列)検索後定義。
クエリパラメータ
with_profile_uid
- (オプション、ブール値)ユーザーのuser profile
uid
を取得するかどうかを決定します。デフォルトはfalse
です。
レスポンスボディ
このAPIは次のトップレベルフィールドを返します:
total
- 見つかったユーザーの総数。
count
- レスポンスで返されたユーザーの数。
users
- クエリに一致するユーザーのリスト。
例
次のリクエストは、read_security
権限を持っていると仮定して、すべてのユーザーをリストします:
Python
resp = client.perform_request(
"GET",
"/_security/_query/user",
)
print(resp)
Js
const response = await client.security.queryUser();
console.log(response);
コンソール
GET /_security/_query/user
成功した呼び出しは、1人以上のユーザーから取得した情報を含む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
}
]
}
このリクエストのために取得されたユーザーのリスト |
次の詳細でユーザーを作成した場合:
Python
resp = client.security.put_user(
username="jacknich",
password="l0ng-r4nd0m-p@ssw0rd",
roles=[
"admin",
"other_role1"
],
full_name="Jack Nicholson",
email="[email protected]",
metadata={
"intelligence": 7
},
)
print(resp)
Js
const response = await client.security.putUser({
username: "jacknich",
password: "l0ng-r4nd0m-p@ssw0rd",
roles: ["admin", "other_role1"],
full_name: "Jack Nicholson",
email: "[email protected]",
metadata: {
intelligence: 7,
},
});
console.log(response);
コンソール
POST /_security/user/jacknich
{
"password" : "l0ng-r4nd0m-p@ssw0rd",
"roles" : [ "admin", "other_role1" ],
"full_name" : "Jack Nicholson",
"email" : "[email protected]",
"metadata" : {
"intelligence" : 7
}
}
コンソール-結果
{
"created": true
}
ユーザー情報を使用して、クエリでユーザーを取得します:
Python
resp = client.perform_request(
"POST",
"/_security/_query/user",
headers={"Content-Type": "application/json"},
body={
"query": {
"prefix": {
"roles": "other"
}
}
},
)
print(resp)
Js
const response = await client.security.queryUser({
query: {
prefix: {
roles: "other",
},
},
});
console.log(response);
コンソール
POST /_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
を取得します:
Python
resp = client.perform_request(
"POST",
"/_security/_query/user",
params={
"with_profile_uid": "true"
},
headers={"Content-Type": "application/json"},
body={
"query": {
"prefix": {
"roles": "other"
}
}
},
)
print(resp)
Js
const response = await client.security.queryUser({
with_profile_uid: "true",
query: {
prefix: {
roles: "other",
},
},
});
console.log(response);
コンソール
POST /_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"
}
]
}
#### Js
``````js
POST /_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 という部分文字列を含むロールを少なくとも1つ持つユーザーのみを含むようにフィルタリングされます |
|
検索結果のオフセットは2番目(ゼロベースのインデックス)ユーザーです | |
レスポンスのページサイズは2ユーザーです | |
結果はusername で降順にソートされます |
レスポンスには、一致したユーザーのリストとそのソート値が含まれます:
Js
{
"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 |