Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›REST API ›API безопасности

API обновления данных профиля пользователя

Справочник по новым API

Для получения самых последних деталей API обратитесь к API безопасности.

Функция профиля пользователя предназначена только для использования Kibana и решений Elastic Observability, Enterprise Search и Elastic Security. Индивидуальные пользователи и внешние приложения не должны вызывать этот API напрямую. Elastic оставляет за собой право изменить или удалить эту функцию в будущих выпусках без предварительного уведомления.

Обновляет конкретные данные профиля пользователя, связанные с указанным уникальным идентификатором.

Запрос

POST /_security/profile/<uid>/_data

Предварительные условия

Для использования этого API у вас должны быть следующие привилегии:

  • Привилегия manage_user_profile кластера.
  • Привилегия update_profile_data для пространств имён, которые упоминаются в запросе.

Описание

API обновления профиля пользователя обновляет поля labels и data существующего документа профиля пользователя с помощью JSON-объектов. Новые ключи и их значения добавляются в документ профиля, а конфликтующие ключи заменяются данными, включенными в запрос.

Для labels и data содержимое размещается в пространствах имён верхнего уровня. Привилегия update_profile_data глобального доступа предоставляет привилегии для обновления только разрешённых пространств имён.

Параметры пути

uid
(Обязательный, строка) Уникальный идентификатор профиля пользователя.

Параметры запроса

if_seq_no
(Необязательный, целое число) Выполнить операцию только в том случае, если у документа есть этот номер последовательности. См. Управление конкуретностью при оптимистическом подходе.
if_primary_term
(Необязательный, целое число) Выполнить операцию только в том случае, если у документа есть этот первичный термин. См. Управление конкуретностью при оптимистическом подходе.
refresh
(Необязательный, перечисление) Если true, Elasticsearch обновляет затронутые фрагменты, чтобы сделать эту операцию видимой для поиска; если wait_for, то ожидает обновления для отображения операции в поиске; если false, то не выполняет никаких действий с обновлениями. Допустимые значения: true, false, wait_for. По умолчанию: false.
uid
(Обязательный, строка) Уникальный идентификатор профиля пользователя.

Тело запроса

labels
(Обязательный*, объект) Поисковые данные, которые вы хотите связать с профилем пользователя. Это поле поддерживает вложенную структуру данных. Внутри объекта labels имена ключей верхнего уровня не могут начинаться с символа подчёркивания (_) или содержать точку (.).
data
(Обязательный*, объект) Данные, которые не подлежат поиску, которые вы хотите связать с профилем пользователя. Это поле поддерживает вложенную структуру данных. Внутри объекта data имена ключей верхнего уровня не могут начинаться с символа подчёркивания (_) или содержать точку (.). Объект data не подлежит поиску, но может быть получен с помощью API получения профиля пользователя.

*Указывает, что настройка требуется в некоторых, но не во всех случаях.

Тело ответа

Успешный вызов API обновления данных профиля пользователя возвращает JSON-структуру, указывающую на то, что запрос принят:

{
  "acknowledged": true
}

Примеры

Следующий запрос обновляет документ профиля для uid, соответствующий u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0:

resp = client.security.update_user_profile_data(
    uid="u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
    labels={
        "direction": "east"
    },
    data={
        "app1": {
            "theme": "default"
        }
    },
)
print(resp)
const response = await client.security.updateUserProfileData({
  uid: "u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
  labels: {
    direction: "east",
  },
  data: {
    app1: {
      theme: "default",
    },
  },
});
console.log(response);
POST /_security/profile/u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0/_data
{
  "labels": {
    "direction": "east"
  },
  "data": {
    "app1": {
      "theme": "default"
    }
  }
}

Вы можете обновить данные профиля, чтобы заменить некоторые ключи и добавить новые:

resp = client.security.update_user_profile_data(
    uid="u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
    labels={
        "direction": "west"
    },
    data={
        "app1": {
            "font": "large"
        }
    },
)
print(resp)
const response = await client.security.updateUserProfileData({
  uid: "u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
  labels: {
    direction: "west",
  },
  data: {
    app1: {
      font: "large",
    },
  },
});
console.log(response);
POST /_security/profile/u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0/_data
{
  "labels": {
    "direction": "west"
  },
  "data": {
    "app1": {
      "font": "large"
    }
  }
}

Если вы сейчас получите профиль, будут возвращены объединённые данные профиля:

resp = client.security.get_user_profile(
    uid="u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
    data="*",
)
print(resp)
const response = await client.security.getUserProfile({
  uid: "u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
  data: "*",
});
console.log(response);
GET /_security/profile/u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0?data=*
{
  "profiles": [
    {
      "uid": "u_P_0BMHgaOK3p7k-PFWUCbw9dQ-UFjt01oWJ_Dp2PmPc_0",
      "enabled": true,
      "last_synchronized": 1642650651037,
      "user": {
        "username": "jackrea",
        "roles": [
          "admin"
        ],
        "realm_name": "native",
        "full_name": "Jack Reacher",
        "email": "jackrea@example.com"
      },
      "labels": {
        "direction": "west"
      },
      "data": {
        "app1": {
          "theme": "default",
          "font": "large"
        }
      },
      "_doc": {
        "_primary_term": 88,
        "_seq_no": 66
      }
    }
  ]
}

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/security-api-update-user-profile-data.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API