Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Потоки данных ›Жизненный цикл потока данных

Практическое руководство: Создание потока данных с жизненным циклом

Чтобы создать поток данных с встроенным жизненным циклом, выполните следующие действия:

  1. Создать шаблон индекса
  2. Создать поток данных
  3. Получить информацию о жизненном цикле

Создать шаблон индекса

Для потока данных требуется соответствующий шаблон индекса. Вы можете настроить жизненный цикл потока данных, задав поле lifecycle в шаблоне индекса так же, как вы это делаете для отображений и настроек индекса. Вы можете определить шаблон индекса, устанавливающий жизненный цикл следующим образом:

  • Включите объект data_stream, чтобы включить потоки данных.
  • Определите жизненный цикл в разделе шаблона или включите составной шаблон, определяющий жизненный цикл.
  • Используйте приоритет, больший, чем 200, чтобы избежать коллизий со встроенными шаблонами. См. Избегайте коллизий шаблонов индексов.

Вы можете использовать API создания шаблона индекса.

resp = client.indices.put_index_template(
    name="my-index-template",
    index_patterns=[
        "my-data-stream*"
    ],
    data_stream={},
    priority=500,
    template={
        "lifecycle": {
            "data_retention": "7d"
        }
    },
    meta={
        "description": "Template with data stream lifecycle"
    },
)
print(resp)
response = client.indices.put_index_template(
  name: 'my-index-template',
  body: {
    index_patterns: [
      'my-data-stream*'
    ],
    data_stream: {},
    priority: 500,
    template: {
      lifecycle: {
        data_retention: '7d'
      }
    },
    _meta: {
      description: 'Template with data stream lifecycle'
    }
  }
)
puts response
const response = await client.indices.putIndexTemplate({
  name: "my-index-template",
  index_patterns: ["my-data-stream*"],
  data_stream: {},
  priority: 500,
  template: {
    lifecycle: {
      data_retention: "7d",
    },
  },
  _meta: {
    description: "Template with data stream lifecycle",
  },
});
console.log(response);
PUT _index_template/my-index-template
{
  "index_patterns": ["my-data-stream*"],
  "data_stream": { },
  "priority": 500,
  "template": {
    "lifecycle": {
      "data_retention": "7d"
    }
  },
  "_meta": {
    "description": "Template with data stream lifecycle"
  }
}

Создать поток данных

Вы можете создать поток данных двумя способами:

  1. Создав поток вручную с помощью API создания потока данных. Имя потока по-прежнему должно соответствовать одному из шаблонов индексов вашего шаблона.

    resp = client.indices.create_data_stream(
        name="my-data-stream",
    )
    print(resp)
    response = client.indices.create_data_stream(
      name: 'my-data-stream'
    )
    puts response
    const response = await client.indices.createDataStream({
      name: "my-data-stream",
    });
    console.log(response);
    PUT _data_stream/my-data-stream
  2. Путем индексирования запросов, которые направлены на имя потока. Это имя должно соответствовать одному из шаблонов индексов вашего шаблона индекса.

    resp = client.bulk(
        index="my-data-stream",
        operations=[
            {
                "create": {}
            },
            {
                "@timestamp": "2099-05-06T16:21:15.000Z",
                "message": "192.0.2.42 - - [06/May/2099:16:21:15 +0000] \"GET /images/bg.jpg HTTP/1.0\" 200 24736"
            },
            {
                "create": {}
            },
            {
                "@timestamp": "2099-05-06T16:25:42.000Z",
                "message": "192.0.2.255 - - [06/May/2099:16:25:42 +0000] \"GET /favicon.ico HTTP/1.0\" 200 3638"
            }
        ],
    )
    print(resp)
    response = client.bulk(
      index: 'my-data-stream',
      body: [
        {
          create: {}
        },
        {
          "@timestamp": '2099-05-06T16:21:15.000Z',
          message: '192.0.2.42 - - [06/May/2099:16:21:15 +0000] "GET /images/bg.jpg HTTP/1.0" 200 24736'
        },
        {
          create: {}
        },
        {
          "@timestamp": '2099-05-06T16:25:42.000Z',
          message: '192.0.2.255 - - [06/May/2099:16:25:42 +0000] "GET /favicon.ico HTTP/1.0" 200 3638'
        }
      ]
    )
    puts response
    const response = await client.bulk({
      index: "my-data-stream",
      operations: [
        {
          create: {},
        },
        {
          "@timestamp": "2099-05-06T16:21:15.000Z",
          message:
            '192.0.2.42 - - [06/May/2099:16:21:15 +0000] "GET /images/bg.jpg HTTP/1.0" 200 24736',
        },
        {
          create: {},
        },
        {
          "@timestamp": "2099-05-06T16:25:42.000Z",
          message:
            '192.0.2.255 - - [06/May/2099:16:25:42 +0000] "GET /favicon.ico HTTP/1.0" 200 3638',
        },
      ],
    });
    console.log(response);
    PUT my-data-stream/_bulk
    { "create":{ } }
    { "@timestamp": "2099-05-06T16:21:15.000Z", "message": "192.0.2.42 - - [06/May/2099:16:21:15 +0000] \"GET /images/bg.jpg HTTP/1.0\" 200 24736" }
    { "create":{ } }
    { "@timestamp": "2099-05-06T16:25:42.000Z", "message": "192.0.2.255 - - [06/May/2099:16:25:42 +0000] \"GET /favicon.ico HTTP/1.0\" 200 3638" }

Получить информацию о жизненном цикле

Вы можете использовать API получения жизненного цикла потока данных, чтобы увидеть жизненный цикл потока данных и API объяснения жизненного цикла потока данных, чтобы увидеть точное состояние каждого базового индекса.

resp = client.indices.get_data_lifecycle(
    name="my-data-stream",
)
print(resp)
response = client.indices.get_data_lifecycle(
  name: 'my-data-stream'
)
puts response
const response = await client.indices.getDataLifecycle({
  name: "my-data-stream",
});
console.log(response);
GET _data_stream/my-data-stream/_lifecycle

Результат будет выглядеть так:

{
  "data_streams": [
    {
      "name": "my-data-stream",                                     
      "lifecycle": {
        "enabled": true,                                            
        "data_retention": "7d",                                     
        "effective_retention": "7d",                                
        "retention_determined_by": "data_stream_configuration"
      }
    }
  ],
  "global_retention": {}
}

Имя вашего потока данных.

Показывает, включен ли жизненный цикл потока данных для этого потока данных.

Период хранения данных, индексированных в этом потоке данных, настроенный пользователем.

Срок хранения, который будет применен жизненным циклом потока данных. Это означает, что данные в этом потоке данных будут храниться как минимум 7 дней. После этого Elasticsearch может удалить их по своему усмотрению.

Если вы хотите получить больше информации о том, как применяется жизненный цикл потока данных к отдельным базовым индексам, используйте API объяснения жизненного цикла потока данных:

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-000001": {
      "index": ".ds-my-data-stream-2023.04.19-000001",      
      "managed_by_lifecycle": true,                               
      "index_creation_date_millis": 1681918009501,
      "time_since_index_creation": "1.6m",                  
      "lifecycle": {                                        
        "enabled": true,
        "data_retention": "7d"
      }
    }
  }
}

Имя базового индекса.

Если он управляется встроенным жизненным циклом потока данных.

Время с момента создания индекса.

Настройки жизненного цикла, применяемые к этому базовому индексу.

© 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-new-data-stream.html

Spec-Zone.ru

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