Потоки данных
Поток данных позволяет хранить данные временных рядов только для добавления в нескольких индексах, предоставляя при этом единый именованный ресурс для запросов. Потоки данных хорошо подходят для журналов, событий, метрик и других постоянно генерируемых данных.
Вы можете отправлять запросы индексирования и поиска напрямую в поток данных. Поток автоматически перенаправляет запрос на базовые индексы, хранящие данные потока. Вы можете использовать управление жизненным циклом индексов (ILM) для автоматизации управления этими базовыми индексами. Например, вы можете использовать ILM для автоматического перемещения устаревших базовых индексов на менее дорогостоящее оборудование и удаления ненужных индексов. ILM поможет сократить расходы и издержки по мере роста данных.
Нужен ли поток данных?
Чтобы определить, следует ли использовать поток данных для ваших данных, вы должны рассмотреть формат данных и ожидаемое взаимодействие. Хорошим кандидатом для использования потока данных будут данные, соответствующие следующим критериям:
- Ваши данные содержат поле со временем или оно может быть автоматически сгенерировано.
- Вы в основном выполняете запросы индексирования с периодическими обновлениями и удалениями.
- Вы индексируете документы без
_id, или при индексировании документов с явным_idожидается поведение «первое письмо — побеждает».
Для большинства случаев использования временных рядов данных поток данных будет хорошо подходить. Однако, если вы обнаружите, что ваши данные не подходят под эти категории (например, если вы часто отправляете несколько документов, используя тот же _id, ожидая поведения «последнее письмо — побеждает»), возможно, вам следует использовать алиас индекса с индексом записи. Смотрите документацию по управлению данными временных рядов без потока данных для получения дополнительной информации.
Помните, что некоторые функции, такие как потоки данных временных рядов (TSDS) и жизненные циклы потоков данных, требуют потока данных.
Базовые индексы
Поток данных состоит из одного или нескольких скрытых, автоматически сгенерированных базовых индексов.
Поток данных требует соответствующей шаблона индекса. Шаблон содержит отображения и настройки, используемые для настройки базовых индексов потока.
Каждый документ, индексированный в поток данных, должен содержать поле @timestamp, отображенное как date или date_nanos тип поля. Если шаблон индекса не определяет отображение для поля @timestamp, Elasticsearch отображает @timestamp как поле date с параметрами по умолчанию.
Один и тот же шаблон индекса может использоваться для нескольких потоков данных. Вы не можете удалить шаблон индекса, используемый потоком данных.
Шаблон именования базовых индексов является деталью реализации, и из него нельзя извлекать никакой информации. Единственным неизменным правилом является то, что каждый генерируемый индекс потока данных будет иметь уникальное имя.
Запросы чтения
При отправке запроса чтения в поток данных, поток перенаправляет запрос на все его базовые индексы.
Индекс записи
Наиболее недавно созданный базовый индекс является индексом записи потока данных. Поток добавляет новые документы только в этот индекс.
Вы не можете добавлять новые документы в другие базовые индексы, даже отправляя запросы непосредственно в индекс.
Вы также не можете выполнять операции с индексом записи, которые могут помешать индексированию, например:
Перенос
Перенос создает новый базовый индекс, который становится новым индексом записи потока.
Рекомендуется использовать ILM для автоматического переноса потоков данных, когда индекс записи достигает указанного возраста или размера. При необходимости вы также можете произвести перенос потока данных вручную.
Генерация
Каждый поток данных отслеживает свою генерацию: шестизначное целое число с заполнением нулями, начинающееся с 000001.
При создании базового индекса имя индекса определяется по следующей схеме:
.ds-<data-stream>-<yyyy.MM.dd>-<generation>
<yyyy.MM.dd> — дата создания базового индекса. Базовые индексы с более высокой генерацией содержат более свежие данные. Например, поток данных web-server-logs имеет генерацию 34. Наиболее последний базовый индекс потока, созданный 7 марта 2099 года, имеет имя .ds-web-server-logs-2099.03.07-000034.
Некоторые операции, такие как сжатие или восстановление, могут изменить имя базового индекса. Эти изменения имени не удаляют базовый индекс из потока данных.
Генерация потока данных может измениться без добавления нового индекса в поток данных (например, при сжатии существующего базового индекса). Это означает, что базовые индексы для некоторых поколений могут никогда не существовать. Не следует извлекать никакую информацию из имён базовых индексов.
Только для добавления (в основном)
Потоки данных предназначены для случаев, когда существующие данные редко обновляются. Вы не можете отправлять запросы обновления или удаления для существующих документов непосредственно в поток данных. Однако вы по-прежнему можете обновить или удалить документы в потоке данных, отправив запросы непосредственно в базовый индекс документа.
Если вам нужно обновить большое количество документов в потоке данных, вы можете использовать API обновления по запросу и удаления по запросу.
Если вы часто отправляете несколько документов, используя тот же _id, ожидая поведения «последнее письмо — побеждает», возможно, вам следует использовать алиас индекса с индексом записи. См. Управление данными временных рядов без потоков данных.
© 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/data-streams.html