Учебник: Обновление существующего потока данных
Чтобы обновить жизненный цикл существующего потока данных, выполните следующие действия:
Установить жизненный цикл потока данных
Чтобы добавить или изменить срок хранения вашего потока данных, можно использовать API PUT lifecycle.
-
Можно установить бесконечный срок хранения, что означает, что ваши данные никогда не будут удалены. Например:
resp = client.indices.put_data_lifecycle( name="my-data-stream", ) print(resp)response = client.indices.put_data_lifecycle( name: 'my-data-stream', body: {} ) puts responseconst response = await client.indices.putDataLifecycle({ name: "my-data-stream", }); console.log(response);PUT _data_stream/my-data-stream/_lifecycle { }Пустой payload означает, что ваш поток данных всё ещё управляемый, но данные никогда не будут удалены. Управление потоком данных временных рядов, таким как логи или метрики, позволяет Elasticsearch лучше хранить ваши данные, даже если вы не используете срок хранения.
-
Или можно установить срок хранения по вашему выбору. Например:
resp = client.indices.put_data_lifecycle( name="my-data-stream", data_retention="30d", ) print(resp)response = client.indices.put_data_lifecycle( name: 'my-data-stream', body: { data_retention: '30d' } ) puts responseconst response = await client.indices.putDataLifecycle({ name: "my-data-stream", data_retention: "30d", }); console.log(response);PUT _data_stream/my-data-stream/_lifecycle { "data_retention": "30d" }Срок хранения этого потока данных установлен на 30 дней. Это означает, что Elasticsearch имеет право удалять данные, которые старше 30 дней, по своему усмотрению.
Изменения в жизненном цикле применяются ко всем базовым индексам потока данных. Вы можете увидеть эффект изменения с помощью API explain:
resp = client.indices.explain_data_lifecycle(
index=".ds-my-data-stream-*",
)
print(resp) response = client.indices.explain_data_lifecycle( index: '.ds-my-data-stream-*' ) puts response
const response = await client.indices.explainDataLifecycle({
index: ".ds-my-data-stream-*",
});
console.log(response); GET .ds-my-data-stream-*/_lifecycle/explain
Ответ будет выглядеть следующим образом:
{
"indices": {
".ds-my-data-stream-2023.04.19-000002": {
"index": ".ds-my-data-stream-2023.04.19-000002",
"managed_by_lifecycle": true,
"index_creation_date_millis": 1681919221417,
"time_since_index_creation": "6.85s",
"lifecycle": {
"enabled": true,
"data_retention": "30d"
}
},
".ds-my-data-stream-2023.04.17-000001": {
"index": ".ds-my-data-stream-2023.04.17-000001",
"managed_by_lifecycle": true,
"index_creation_date_millis": 1681745209501,
"time_since_index_creation": "48d",
"rollover_date_millis": 1681919221419,
"time_since_rollover": "6.84s",
"generation_time": "6.84s",
"lifecycle": {
"enabled": true,
"data_retention": "30d"
}
}
}
} | Имя базового индекса. | |
| Этот индекс управляется жизненным циклом потока данных. | |
| Время, прошедшее с момента создания этого индекса. | |
| Срок хранения данных для этого индекса составляет не менее 30 дней, так как он был недавно обновлён. | |
| Имя базового индекса. | |
| Этот индекс управляется встроенным жизненным циклом потока данных. | |
| Время, прошедшее с момента создания этого индекса. | |
| Время, прошедшее с момента переноса этого индекса. | |
| Время, которое будет использоваться для определения момента, когда безопасно удалить этот индекс и все его данные. | |
| Срок хранения данных для этого индекса также составляет не менее 30 дней, так как он был недавно обновлён. |
Удалить жизненный цикл для потока данных
Чтобы удалить жизненный цикл потока данных, можно использовать API удаления жизненного цикла. В результате обслуживающие операции, которые были применены жизненным циклом, больше не будут применяться к потоку данных и всем его базовым индексам. Например:
resp = client.indices.delete_data_lifecycle(
name="my-data-stream",
)
print(resp) response = client.indices.delete_data_lifecycle( name: 'my-data-stream' ) puts response
const response = await client.indices.deleteDataLifecycle({
name: "my-data-stream",
});
console.log(response); DELETE _data_stream/my-data-stream/_lifecycle
Затем можно снова использовать API explain, чтобы увидеть, что индексы больше не управляются.
resp = client.indices.explain_data_lifecycle(
index=".ds-my-data-stream-*",
)
print(resp) response = client.indices.explain_data_lifecycle( index: '.ds-my-data-stream-*' ) puts response
const response = await client.indices.explainDataLifecycle({
index: ".ds-my-data-stream-*",
});
console.log(response); GET .ds-my-data-stream-*/_lifecycle/explain
{
"indices": {
".ds-my-data-stream-2023.04.19-000002": {
"index": ".ds-my-data-stream-2023.04.19-000002",
"managed_by_lifecycle": false
},
".ds-my-data-stream-2023.04.17-000001": {
"index": ".ds-my-data-stream-2023.04.19-000001",
"managed_by_lifecycle": false
}
}
} | Имя базового индекса. | |
| Указание, что индекс не управляется жизненным циклом потока данных. | |
| Имя другого базового индекса. | |
| Указание, что индекс не управляется жизненным циклом потока данных. |
© 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/tutorial-manage-existing-data-stream.html