Spec-Zone.ru › Elasticsearch 7
›Руководство по Elasticsearch [7.17] ›Потоки данных

Изменение отображений и настроек для потока данных

Каждый поток данных имеет соответствующий шаблон индекса. Картирования и настройки индекса из этого шаблона применяются к новым фоновым индексам, созданным для потока. Это включает первый фоновый индекс потока, который автоматически генерируется при создании потока.

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

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

  • Добавить новое сопоставление поля в поток данных
  • Изменить существующее сопоставление поля в потоке данных
  • Изменить динамическую настройку индекса для потока данных
  • Изменить статическую настройку индекса для потока данных

Если ваши изменения включают изменения в существующие сопоставления полей или статические настройки индекса, часто требуется переиндексация для применения изменений к фоновым индексам потока данных. Если вы уже выполняете переиндексацию, вы можете использовать тот же процесс для добавления новых сопоставлений полей и изменения динамических настроек индекса. См. Использовать переиндексацию для изменения отображений или настроек.

Добавить новое сопоставление поля в поток данных

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

  1. Обновите шаблон индекса, используемый потоком данных. Это гарантирует, что новое сопоставление поля добавлено в будущие фоновые индексы, созданные для потока.

    Например, 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.

  2. Используйте 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 обновления сопоставления. Чтобы обновить эти параметры для существующего поля, выполните следующие действия:

  1. Обновите шаблон индекса, используемый потоком данных. Это гарантирует, что обновленное сопоставление поля добавлено в будущие фоновые индексы, созданные для потока.

    Например, 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.

  2. Используйте 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
            }
          }
        }
      }
    }

За исключением поддерживаемых параметров сопоставления, не рекомендуется изменять сопоставление или тип данных поля существующих полей, даже в соответствующем шаблоне индекса потока данных или его фоновых индексах. Изменение сопоставления существующего поля может привести к недействительности любых данных, которые уже проиндексированы.

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

Изменить динамическую настройку индекса для потока данных

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

  1. Обновите шаблон индекса, используемый потоком данных. Это гарантирует, что настройка применяется к будущим фоновым индексам, созданным для потока.

    Например, 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 секунд).

  2. Используйте 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"]                    
    }
  }
}

Добавляет настройку индекса sort.field.

Добавляет настройку индекса sort.order.

При необходимости вы можете переключить поток данных, чтобы немедленно применить настройку к индексу записи потока данных. Это влияет на любые новые данные, добавленные в поток после переключения. Однако это не влияет на существующие фоновые индексы потока данных или существующие данные.

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

Использование переиндексации для изменения отображений или настроек

Вы можете использовать переиндексацию для изменения отображений или настроек потока данных. Это часто требуется для изменения типа данных существующего поля или обновления статических настроек индекса для базовых индексов.

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

Выполните следующие действия:

  1. Выберите имя или шаблон индекса для нового потока данных. Этот новый поток данных будет содержать данные из вашего существующего потока.

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

    Следующий запрос API разрешения индекса проверяет наличие каких-либо существующих индексов, псевдонимов или потоков данных, начинающихся с new-data-stream. В противном случае можно использовать шаблон индекса new-data-stream* для создания нового потока данных.

    GET /_resolve/index/new-data-stream*

    API возвращает следующий ответ, указывающий, что ни один из существующих целевых объектов не соответствует этому шаблону.

    {
      "indices": [ ],
      "aliases": [ ],
      "data_streams": [ ]
    }
  2. Создайте или обновите шаблон индекса. Этот шаблон должен содержать отображения и настройки, которые вы хотите применить к базовым индексам нового потока данных.

    Этот шаблон индекса должен соответствовать требованиям шаблона потока данных. Он также должен содержать выбранное ранее имя или шаблон индекса в свойстве 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.

  3. Используйте API создания потока данных, чтобы вручную создать новый поток данных. Имя потока данных должно совпадать с шаблоном индекса, определённым в свойстве index_patterns нового шаблона.

    Не рекомендуется индексировать новые данные для создания этого потока данных. Позже вы переиндексируете старые данные из существующего потока данных в этот новый поток. В результате может получиться один или несколько базовых индексов, содержащих смесь новых и старых данных.

    Смешивание новых и старых данных в потоке данных

    Хотя смешивание новых и старых данных безопасно, оно может повлиять на сохранение данных. Если вы удалите старые индексы, вы можете случайно удалить базовый индекс, содержащий как новые, так и старые данные. Чтобы предотвратить преждевременную потерю данных, необходимо сохранить такой базовый индекс до тех пор, пока вы не будете готовы удалить его самые новые данные.

    Следующий запрос API создания потока данных нацелен на new-data-stream, который соответствует шаблону индекса для new-data-stream-template. Поскольку ни один существующий индекс или поток данных не использует это имя, этот запрос создаёт поток данных new-data-stream.

    PUT /_data_stream/new-data-stream
  4. Если вы не хотите смешивать новые и старые данные в новом потоке данных, приостановите индексирование новых документов. Хотя смешивание старых и новых данных безопасно, оно может повлиять на сохранение данных. См. Смешивание новых и старых данных в потоке данных.
  5. Если вы используете ILM для автоматизации смены поколений, уменьшите интервал опроса ILM. Это обеспечит, что текущий индекс записи не станет слишком большим, ожидая проверки смены поколений. По умолчанию ILM проверяет условия смены поколений каждые 10 минут.

    Следующий запрос API настроек кластера уменьшает настройку indices.lifecycle.poll_interval до значения 1m (одна минута).

    PUT /_cluster/settings
    {
      "persistent": {
        "indices.lifecycle.poll_interval": "1m"
      }
    }
  6. Переиндексируйте данные в новый поток данных с помощью op_type create.

    Если вы хотите разбить данные в порядке, в котором они были первоначально индексированы, вы можете выполнить отдельные запросы переиндексации. Эти запросы переиндексации могут использовать отдельные базовые индексы в качестве источника. Вы можете использовать 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"
      }
    }
  7. Если вы ранее изменили интервал опроса ILM, измените его обратно к исходному значению после завершения переиндексации. Это предотвращает ненужную нагрузку на мастер-узел.

    Следующий запрос API настроек кластера сбрасывает настройку indices.lifecycle.poll_interval до её значения по умолчанию.

    PUT /_cluster/settings
    {
      "persistent": {
        "indices.lifecycle.poll_interval": null
      }
    }
  8. Возобновите индексирование с использованием нового потока данных. Поиски в этом потоке теперь будут запрашивать ваши новые данные и переиндексированные данные.
  9. После проверки того, что все переиндексированные данные доступны в новом потоке данных, можно безопасно удалить старый поток.

    Следующий запрос 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

Spec-Zone.ru

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