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