Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Картирование

Поля во время выполнения

Поле во время выполнения — это поле, которое вычисляется во время запроса. Поля во время выполнения позволяют:

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

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

Используйте параметр fields в API _search для получения значений полей во время выполнения. Поля во время выполнения не отображаются в _source, но API fields работает со всеми полями, даже теми, которые не были отправлены в оригинальном запросе _source.

Поля во время выполнения полезны при работе с лог-данными (см. примеры), особенно когда вы не уверены в структуре данных. Скорость поиска уменьшается, но размер индекса значительно меньше, и вы можете быстрее обрабатывать логи без необходимости их индексирования.

Преимущества

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

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

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

Стимулы

Поля во время выполнения могут заменить многие способы использования сценариев с API _search. Способ использования поля во время выполнения зависит от количества документов, на которых запускается включенный сценарий. Например, если вы используете параметр fields в API _search для получения значений поля во время выполнения, сценарий выполняется только на лучших результатах, как и сценарии полей.

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

Аналогичным образом, вы можете написать запрос скрипта, который фильтрует документы в запросе поиска на основе сценария. Поля во время выполнения обеспечивают очень похожую функцию, которая более гибкая. Вы пишете сценарий для создания значений полей, и они доступны везде, например, в fields, всех запросах и агрегациях.

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

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

Недостатки

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

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

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

Запросы к полям во время выполнения считаются дорогими. Если search.allow_expensive_queries установлено в значение false, дорогостоящие запросы запрещены, и Elasticsearch отклонит любые запросы к полям во время выполнения.

© 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/runtime.html

Spec-Zone.ru

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