ユーザークエリAPI

ネイティブユーザークエリDSLを使用してページネーション形式で取得します。

get user apiとは異なり、組み込みユーザーは結果から除外されます。このAPIはネイティブユーザー専用です。

リクエスト

GET /_security/_query/user

POST /_security/_query/user

前提条件

  • このAPIを使用するには、少なくともread_securityクラスター権限が必要です。

説明

このAPIを使用して、ネイティブレルムによって管理されているユーザーをページネーション形式で取得します。オプションで、クエリを使用して結果をフィルタリングできます。

リクエストボディ

リクエストボディに次のパラメータを指定できます:

  • query
  • (オプション、文字列)返すユーザーをフィルタリングするためのクエリ。クエリは、match_allbooltermtermsmatchidsprefixwildcardexistsrange、およびsimple query stringを含むクエリタイプのサブセットをサポートします。
    ユーザーに関連付けられた次の公開値をクエリできます。
    1. - `````username
    • ユーザーの識別子。
    • roles
    • ユーザーに割り当てられたロールのロール名の配列。
    • full_name
    • ユーザーのフルネーム。
    • email
    • ユーザーのメールアドレス。
    • enabled
    • ユーザーが有効かどうかを指定します。
  • from
  • (オプション、整数)開始ドキュメントオフセット。非負である必要があり、デフォルトは0です。
    デフォルトでは、fromおよびsizeパラメータを使用して10,000件を超えるヒットをページングすることはできません。より多くのヒットをページングするには、search_afterパラメータを使用します。
  • size
  • (オプション、整数)返すヒットの数。負であってはならず、デフォルトは10です。
    デフォルトでは、fromおよびsizeパラメータを使用して10,000件を超えるヒットをページングすることはできません。より多くのヒットをページングするには、search_afterパラメータを使用します。
  • sort
  • (オプション、オブジェクト)ソート定義usernameroles、またはenabledでソートできます。さらに、インデックス順序でソートするために_docフィールドにもソートを適用できます。
  • search_after
  • (オプション、配列)検索後定義。

クエリパラメータ

  • with_profile_uid
  • (オプション、ブール値)ユーザーのuser profile uidを取得するかどうかを決定します。デフォルトはfalseです。

レスポンスボディ

このAPIは次のトップレベルフィールドを返します:

  • total
  • 見つかったユーザーの総数。
  • count
  • レスポンスで返されたユーザーの数。
  • users
  • クエリに一致するユーザーのリスト。

次のリクエストは、read_security権限を持っていると仮定して、すべてのユーザーをリストします:

Python

  1. resp = client.perform_request(
  2. "GET",
  3. "/_security/_query/user",
  4. )
  5. print(resp)

Js

  1. const response = await client.security.queryUser();
  2. console.log(response);

コンソール

  1. GET /_security/_query/user

成功した呼び出しは、1人以上のユーザーから取得した情報を含むJSON構造を返します:

コンソール-結果

  1. {
  2. "total": 2,
  3. "count": 2,
  4. "users": [
  5. {
  6. "username": "jacknich",
  7. "roles": [
  8. "admin",
  9. "other_role1"
  10. ],
  11. "full_name": "Jack Nicholson",
  12. "email": "[email protected]",
  13. "metadata": {
  14. "intelligence": 7
  15. },
  16. "enabled": true
  17. },
  18. {
  19. "username": "sandrakn",
  20. "roles": [
  21. "admin",
  22. "other_role1"
  23. ],
  24. "full_name": "Sandra Knight",
  25. "email": "[email protected]",
  26. "metadata": {
  27. "intelligence": 7
  28. },
  29. "enabled": true
  30. }
  31. ]
  32. }
このリクエストのために取得されたユーザーのリスト

次の詳細でユーザーを作成した場合:

Python

  1. resp = client.security.put_user(
  2. username="jacknich",
  3. password="l0ng-r4nd0m-p@ssw0rd",
  4. roles=[
  5. "admin",
  6. "other_role1"
  7. ],
  8. full_name="Jack Nicholson",
  9. email="[email protected]",
  10. metadata={
  11. "intelligence": 7
  12. },
  13. )
  14. print(resp)

Js

  1. const response = await client.security.putUser({
  2. username: "jacknich",
  3. password: "l0ng-r4nd0m-p@ssw0rd",
  4. roles: ["admin", "other_role1"],
  5. full_name: "Jack Nicholson",
  6. email: "[email protected]",
  7. metadata: {
  8. intelligence: 7,
  9. },
  10. });
  11. console.log(response);

コンソール

  1. POST /_security/user/jacknich
  2. {
  3. "password" : "l0ng-r4nd0m-p@ssw0rd",
  4. "roles" : [ "admin", "other_role1" ],
  5. "full_name" : "Jack Nicholson",
  6. "email" : "[email protected]",
  7. "metadata" : {
  8. "intelligence" : 7
  9. }
  10. }

成功した呼び出しは、次のJSON構造を返します:

コンソール-結果

  1. {
  2. "created": true
  3. }

ユーザー情報を使用して、クエリでユーザーを取得します:

Python

  1. resp = client.perform_request(
  2. "POST",
  3. "/_security/_query/user",
  4. headers={"Content-Type": "application/json"},
  5. body={
  6. "query": {
  7. "prefix": {
  8. "roles": "other"
  9. }
  10. }
  11. },
  12. )
  13. print(resp)

Js

  1. const response = await client.security.queryUser({
  2. query: {
  3. prefix: {
  4. roles: "other",
  5. },
  6. },
  7. });
  8. console.log(response);

コンソール

  1. POST /_security/_query/user
  2. {
  3. "query": {
  4. "prefix": {
  5. "roles": "other"
  6. }
  7. }
  8. }

成功した呼び出しは、ユーザーのためのJSON構造を返します:

コンソール-結果

  1. {
  2. "total": 1,
  3. "count": 1,
  4. "users": [
  5. {
  6. "username": "jacknich",
  7. "roles": [
  8. "admin",
  9. "other_role1"
  10. ],
  11. "full_name": "Jack Nicholson",
  12. "email": "[email protected]",
  13. "metadata": {
  14. "intelligence": 7
  15. },
  16. "enabled": true
  17. }
  18. ]
  19. }

レスポンスの一部としてユーザーprofile_uidを取得します:

Python

  1. resp = client.perform_request(
  2. "POST",
  3. "/_security/_query/user",
  4. params={
  5. "with_profile_uid": "true"
  6. },
  7. headers={"Content-Type": "application/json"},
  8. body={
  9. "query": {
  10. "prefix": {
  11. "roles": "other"
  12. }
  13. }
  14. },
  15. )
  16. print(resp)

Js

  1. const response = await client.security.queryUser({
  2. with_profile_uid: "true",
  3. query: {
  4. prefix: {
  5. roles: "other",
  6. },
  7. },
  8. });
  9. console.log(response);

コンソール

  1. POST /_security/_query/user?with_profile_uid=true
  2. {
  3. "query": {
  4. "prefix": {
  5. "roles": "other"
  6. }
  7. }
  8. }

コンソール-結果

  1. {
  2. "total": 1,
  3. "count": 1,
  4. "users": [
  5. {
  6. "username": "jacknich",
  7. "roles": [
  8. "admin",
  9. "other_role1"
  10. ],
  11. "full_name": "Jack Nicholson",
  12. "email": "[email protected]",
  13. "metadata": {
  14. "intelligence": 7
  15. },
  16. "enabled": true,
  17. "profile_uid": "u_79HkWkwmnBH5gqFKwoxggWPjEBOur1zLPXQPEl1VBW0_0"
  18. }
  19. ]
  20. }
  1. #### Js
  2. ``````js
  3. POST /_security/_query/user
  4. {
  5. "query": {
  6. "bool": {
  7. "must": [
  8. {
  9. "wildcard": {
  10. "email": "*example.com"
  11. }
  12. },
  13. {
  14. "term": {
  15. "enabled": true
  16. }
  17. }
  18. ],
  19. "filter": [
  20. {
  21. "wildcard": {
  22. "roles": "*other*"
  23. }
  24. }
  25. ]
  26. }
  27. },
  28. "from": 1,
  29. "size": 2,
  30. "sort": [
  31. { "username": { "order": "desc"} }
  32. ]
  33. }
  34. `
メールはexample.comで終わる必要があります
ユーザーは有効でなければなりません
結果は、otherという部分文字列を含むロールを少なくとも1つ持つユーザーのみを含むようにフィルタリングされます
検索結果のオフセットは2番目(ゼロベースのインデックス)ユーザーです
レスポンスのページサイズは2ユーザーです
結果はusernameで降順にソートされます

レスポンスには、一致したユーザーのリストとそのソート値が含まれます:

Js

  1. {
  2. "total": 5,
  3. "count": 2,
  4. "users": [
  5. {
  6. "username": "ray",
  7. "roles": [
  8. "other_role3"
  9. ],
  10. "full_name": "Ray Nicholson",
  11. "email": "[email protected]",
  12. "metadata": {
  13. "intelligence": 7
  14. },
  15. "enabled": true,
  16. "_sort": [
  17. "ray"
  18. ]
  19. },
  20. {
  21. "username": "lorraine",
  22. "roles": [
  23. "other_role3"
  24. ],
  25. "full_name": "Lorraine Nicholson",
  26. "email": "[email protected]",
  27. "metadata": {
  28. "intelligence": 7
  29. },
  30. "enabled": true,
  31. "_sort": [
  32. "lorraine"
  33. ]
  34. }
  35. ]
  36. }
ソート値はusername