Изменение отображений и настроек для потока данных
Каждый поток данных имеет соответствующий шаблон индекса. Картирования и настройки индекса из этого шаблона применяются к новым фоновым индексам, созданным для потока. Это включает первый фоновый индекс потока, который автоматически генерируется при создании потока.
Перед созданием потока данных рекомендуется тщательно рассмотреть, какие отображения и настройки следует включить в этот шаблон.
Если вам впоследствии потребуется изменить отображения или настройки потока данных, у вас есть несколько вариантов:
Если ваши изменения включают изменения в существующие сопоставления полей или статические настройки индекса, часто требуется переиндексация для применения изменений к фоновым индексам потока данных. Если вы уже выполняете переиндексацию, вы можете использовать тот же процесс для добавления новых сопоставлений полей и изменения динамических настроек индекса. См. Использовать переиндексацию для изменения отображений или настроек.
Добавить новое сопоставление поля в поток данных
Чтобы добавить сопоставление для нового поля в поток данных, выполните следующие действия:
-
Обновите шаблон индекса, используемый потоком данных. Это гарантирует, что новое сопоставление поля добавлено в будущие фоновые индексы, созданные для потока.
Например,
my-data-stream-template- это существующий шаблон индекса, используемыйmy-data-stream.Следующий запрос создания или обновления шаблона индекса добавляет сопоставление для нового поля,
message, в шаблон.PUT /_index_template/my-data-stream-template { "index_patterns": [ "my-data-stream*" ], "data_stream": { }, "priority": 500, "template": { "mappings": { "properties": { "message": { "type": "text" } } } } }Добавляет сопоставление для нового поля
message. -
Используйте API обновления сопоставления для добавления нового сопоставления поля в поток данных. По умолчанию это добавляет сопоставление в существующие фоновые индексы потока, включая индекс записи.
Следующий запрос API обновления сопоставления добавляет новое сопоставление поля
messageвmy-data-stream.PUT /my-data-stream/_mapping { "properties": { "message": { "type": "text" } } }Чтобы добавить сопоставление только в индекс записи потока, установите параметр запроса API обновления сопоставления
write_index_onlyв значениеtrue.Следующий запрос обновления сопоставления добавляет новое сопоставление поля
messageтолько в индекс записиmy-data-stream. Новое сопоставление поля не добавляется в другие фоновые индексы потока.PUT /my-data-stream/_mapping?write_index_only=true { "properties": { "message": { "type": "text" } } }
Изменить существующее сопоставление поля в потоке данных
Документация по каждому параметру сопоставления указывает, можно ли обновить его для существующего поля с помощью API обновления сопоставления. Чтобы обновить эти параметры для существующего поля, выполните следующие действия:
-
Обновите шаблон индекса, используемый потоком данных. Это гарантирует, что обновленное сопоставление поля добавлено в будущие фоновые индексы, созданные для потока.
Например,
my-data-stream-template- это существующий шаблон индекса, используемыйmy-data-stream.Следующий запрос создания или обновления шаблона индекса изменяет аргумент для параметра сопоставления
ignore_malformedполяhost.ipнаtrue.PUT /_index_template/my-data-stream-template { "index_patterns": [ "my-data-stream*" ], "data_stream": { }, "priority": 500, "template": { "mappings": { "properties": { "host": { "properties": { "ip": { "type": "ip", "ignore_malformed": true } } } } } } }Изменяет значение
ignore_malformedполяhost.ipнаtrue. -
Используйте API обновления сопоставления для применения изменений сопоставления к потоку данных. По умолчанию это применяет изменения к существующим фоновым индексам потока, включая индекс записи.
Следующий запрос API обновления сопоставления нацелен на
my-data-stream. Запрос изменяет аргумент параметра сопоставленияignore_malformedполяhost.ipнаtrue.PUT /my-data-stream/_mapping { "properties": { "host": { "properties": { "ip": { "type": "ip", "ignore_malformed": true } } } } }Чтобы применить изменения сопоставления только к индексу записи потока, установите параметр запроса API добавления сопоставления
write_index_onlyв значениеtrue.Следующий запрос обновления сопоставления изменяет сопоставление поля
host.ipтолько для индекса записиmy-data-stream. Изменение не применяется к другим фоновым индексам потока.PUT /my-data-stream/_mapping?write_index_only=true { "properties": { "host": { "properties": { "ip": { "type": "ip", "ignore_malformed": true } } } } }
За исключением поддерживаемых параметров сопоставления, не рекомендуется изменять сопоставление или тип данных поля существующих полей, даже в соответствующем шаблоне индекса потока данных или его фоновых индексах. Изменение сопоставления существующего поля может привести к недействительности любых данных, которые уже проиндексированы.
Если вам нужно изменить сопоставление существующего поля, создайте новый поток данных и переиндексируйте ваши данные в него. См. Использовать переиндексацию для изменения отображений или настроек.
Изменить динамическую настройку индекса для потока данных
Чтобы изменить динамическую настройку индекса для потока данных, выполните следующие действия:
-
Обновите шаблон индекса, используемый потоком данных. Это гарантирует, что настройка применяется к будущим фоновым индексам, созданным для потока.
Например,
my-data-stream-template- это существующий шаблон индекса, используемыйmy-data-stream.Следующий запрос создания или обновления шаблона индекса изменяет настройку индекса
index.refresh_intervalшаблона на30s(30 секунд).PUT /_index_template/my-data-stream-template { "index_patterns": [ "my-data-stream*" ], "data_stream": { }, "priority": 500, "template": { "settings": { "index.refresh_interval": "30s" } } }Изменяет настройку
index.refresh_intervalна30s(30 секунд). -
Используйте API обновления настроек индекса для обновления настройки индекса для потока данных. По умолчанию это применяет настройку к существующим фоновым индексам потока, включая индекс записи.
Следующий запрос API обновления настроек индекса обновляет настройку
index.refresh_intervalдляmy-data-stream.PUT /my-data-stream/_settings { "index": { "refresh_interval": "30s" } }
Чтобы изменить настройку index.lifecycle.name, сначала используйте API удаления политики, чтобы удалить существующую политику ILM. См. Переключение жизненных циклов.
Изменить статическую настройку индекса для потока данных
Статические настройки индекса можно установить только при создании фонового индекса. Вы не можете обновить статические настройки индекса с помощью API обновления настроек индекса.
Чтобы применить новую статическую настройку к будущим фоновым индексам, обновите шаблон индекса, используемый потоком данных. Настройка автоматически применяется к любому фоновому индексу, созданному после обновления.
Например, my-data-stream-template - это существующий шаблон индекса, используемый my-data-stream.
Следующие запросы создания или обновления API шаблона индекса добавляют новые настройки sort.field и sort.order index в шаблон.
PUT /_index_template/my-data-stream-template
{
"index_patterns": [ "my-data-stream*" ],
"data_stream": { },
"priority": 500,
"template": {
"settings": {
"sort.field": [ "@timestamp"],
"sort.order": [ "desc"]
}
}
} | Добавляет настройку индекса | |
| Добавляет настройку индекса |
При необходимости вы можете переключить поток данных, чтобы немедленно применить настройку к индексу записи потока данных. Это влияет на любые новые данные, добавленные в поток после переключения. Однако это не влияет на существующие фоновые индексы потока данных или существующие данные.
Для применения статических изменений настроек к существующим базовым индексам необходимо создать новый поток данных и переиндексировать данные в него. См. Использование переиндексации для изменения отображений или настроек.
Использование переиндексации для изменения отображений или настроек
Вы можете использовать переиндексацию для изменения отображений или настроек потока данных. Это часто требуется для изменения типа данных существующего поля или обновления статических настроек индекса для базовых индексов.
Для переиндексации потока данных сначала необходимо создать или обновить шаблон индекса, чтобы он содержал желаемые изменения отображений или настроек. Затем можно переиндексировать существующий поток данных в новый поток, соответствующий шаблону. Это применит изменения отображений и настроек из шаблона к каждому документу и базовому индексу, добавленному в новый поток данных. Эти изменения также повлияют на любой будущий базовый индекс, созданный новым потоком.
Выполните следующие действия:
-
Выберите имя или шаблон индекса для нового потока данных. Этот новый поток данных будет содержать данные из вашего существующего потока.
Вы можете использовать API разрешения индекса, чтобы проверить, соответствует ли имя или шаблон каким-либо существующим индексам, псевдонимам или потокам данных. Если да, следует рассмотреть использование другого имени или шаблона.
Следующий запрос API разрешения индекса проверяет наличие каких-либо существующих индексов, псевдонимов или потоков данных, начинающихся с
new-data-stream. В противном случае можно использовать шаблон индексаnew-data-stream*для создания нового потока данных.GET /_resolve/index/new-data-stream*
API возвращает следующий ответ, указывающий, что ни один из существующих целевых объектов не соответствует этому шаблону.
{ "indices": [ ], "aliases": [ ], "data_streams": [ ] } -
Создайте или обновите шаблон индекса. Этот шаблон должен содержать отображения и настройки, которые вы хотите применить к базовым индексам нового потока данных.
Этот шаблон индекса должен соответствовать требованиям шаблона потока данных. Он также должен содержать выбранное ранее имя или шаблон индекса в свойстве
index_patterns.Если вы добавляете или изменяете только несколько вещей, рекомендуется создать новый шаблон, скопировав существующий и внеся необходимые изменения.
Например,
my-data-stream-template— это существующий шаблон индекса, используемыйmy-data-stream.Следующий запрос API создания или обновления шаблона индекса создаёт новый шаблон индекса
new-data-stream-template.new-data-stream-templateиспользуетmy-data-stream-templateв качестве основы со следующими изменениями:- Шаблон индекса в
index_patternsсоответствует любому индексу или потоку данных, начинающемуся сnew-data-stream. - Отображение поля
@timestampиспользует тип данных поляdate_nanosвместо типа данныхdate. - Шаблон включает настройки индекса
sort.fieldиsort.order, которых не было в исходном шаблонеmy-data-stream-template.
PUT /_index_template/new-data-stream-template { "index_patterns": [ "new-data-stream*" ], "data_stream": { }, "priority": 500, "template": { "mappings": { "properties": { "@timestamp": { "type": "date_nanos" } } }, "settings": { "sort.field": [ "@timestamp"], "sort.order": [ "desc"] } } }Изменяет отображение поля
@timestampна тип данных поляdate_nanos.Добавляет настройку индекса
sort.field.Добавляет настройку индекса
sort.order. - Шаблон индекса в
-
Используйте API создания потока данных, чтобы вручную создать новый поток данных. Имя потока данных должно совпадать с шаблоном индекса, определённым в свойстве
index_patternsнового шаблона.Не рекомендуется индексировать новые данные для создания этого потока данных. Позже вы переиндексируете старые данные из существующего потока данных в этот новый поток. В результате может получиться один или несколько базовых индексов, содержащих смесь новых и старых данных.
Смешивание новых и старых данных в потоке данных
Хотя смешивание новых и старых данных безопасно, оно может повлиять на сохранение данных. Если вы удалите старые индексы, вы можете случайно удалить базовый индекс, содержащий как новые, так и старые данные. Чтобы предотвратить преждевременную потерю данных, необходимо сохранить такой базовый индекс до тех пор, пока вы не будете готовы удалить его самые новые данные.
Следующий запрос API создания потока данных нацелен на
new-data-stream, который соответствует шаблону индекса дляnew-data-stream-template. Поскольку ни один существующий индекс или поток данных не использует это имя, этот запрос создаёт поток данныхnew-data-stream.PUT /_data_stream/new-data-stream
- Если вы не хотите смешивать новые и старые данные в новом потоке данных, приостановите индексирование новых документов. Хотя смешивание старых и новых данных безопасно, оно может повлиять на сохранение данных. См. Смешивание новых и старых данных в потоке данных.
-
Если вы используете ILM для автоматизации смены поколений, уменьшите интервал опроса ILM. Это обеспечит, что текущий индекс записи не станет слишком большим, ожидая проверки смены поколений. По умолчанию ILM проверяет условия смены поколений каждые 10 минут.
Следующий запрос API настроек кластера уменьшает настройку
indices.lifecycle.poll_intervalдо значения1m(одна минута).PUT /_cluster/settings { "persistent": { "indices.lifecycle.poll_interval": "1m" } } -
Переиндексируйте данные в новый поток данных с помощью
op_typecreate.Если вы хотите разбить данные в порядке, в котором они были первоначально индексированы, вы можете выполнить отдельные запросы переиндексации. Эти запросы переиндексации могут использовать отдельные базовые индексы в качестве источника. Вы можете использовать API получения потока данных для получения списка базовых индексов.
Например, вы планируете переиндексировать данные из
my-data-streamвnew-data-stream. Однако вы хотите отправить отдельный запрос переиндексации для каждого базового индекса вmy-data-stream, начиная со старейшего базового индекса. Это сохранит порядок, в котором данные были изначально индексированы.Следующий запрос API получения потока данных получает информацию о
my-data-stream, включая список его базовых индексов.GET /_data_stream/my-data-stream
Свойство
indicesответа содержит массив текущих базовых индексов потока. Первый элемент массива содержит информацию о старейшем базовом индексе потока.{ "data_streams": [ { "name": "my-data-stream", "timestamp_field": { "name": "@timestamp" }, "indices": [ { "index_name": ".ds-my-data-stream-2099.03.07-000001", "index_uuid": "Gpdiyq8sRuK9WuthvAdFbw" }, { "index_name": ".ds-my-data-stream-2099.03.08-000002", "index_uuid": "_eEfRrFHS9OyhqWntkgHAQ" } ], "generation": 2, "status": "GREEN", "template": "my-data-stream-template", "hidden": false, "system": false, "replicated": false } ] }Первый элемент массива
indicesдляmy-data-stream. Этот элемент содержит информацию о старейшем базовом индексе потока.ds-my-data-stream-2099.03.07-000001.Следующий запрос API переиндексации копирует документы из
.ds-my-data-stream-2099.03.07-000001вnew-data-stream. В запросеop_typeравноcreate.POST /_reindex { "source": { "index": ".ds-my-data-stream-2099.03.07-000001" }, "dest": { "index": "new-data-stream", "op_type": "create" } }Вы также можете использовать запрос для переиндексации только подмножества документов с каждым запросом.
Следующий запрос API переиндексации копирует документы из
my-data-streamвnew-data-stream. Запрос используетrangeзапрос для переиндексации только документов с отметкой времени за последнюю неделю. Обратите внимание на значениеop_typeв запросе:create.POST /_reindex { "source": { "index": "my-data-stream", "query": { "range": { "@timestamp": { "gte": "now-7d/d", "lte": "now/d" } } } }, "dest": { "index": "new-data-stream", "op_type": "create" } } -
Если вы ранее изменили интервал опроса ILM, измените его обратно к исходному значению после завершения переиндексации. Это предотвращает ненужную нагрузку на мастер-узел.
Следующий запрос API настроек кластера сбрасывает настройку
indices.lifecycle.poll_intervalдо её значения по умолчанию.PUT /_cluster/settings { "persistent": { "indices.lifecycle.poll_interval": null } } - Возобновите индексирование с использованием нового потока данных. Поиски в этом потоке теперь будут запрашивать ваши новые данные и переиндексированные данные.
-
После проверки того, что все переиндексированные данные доступны в новом потоке данных, можно безопасно удалить старый поток.
Следующий запрос API удаления потока данных удаляет
my-data-stream. Этот запрос также удаляет базовые индексы потока и любые данные, которые они содержат.DELETE /_data_stream/my-data-stream
© 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/7.17/data-streams-change-mappings-and-settings.html