Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Свертка или преобразование данных ›Свертка исторических данных

Ограничения поиска свертки

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

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

На этой странице выделены основные ограничения, чтобы вы были об этом осведомлены.

Только один индекс свертки на поиск

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

  • Необходимо указать по меньшей мере один индекс/шаблон индекса. Это может быть либо индекс свертки, либо не связанный с ней индекс. Пропуск параметра индекса или использование _all запрещено
  • Можно указать несколько индексов, не связанных со сверткой
  • Можно указать только один индекс свертки. Если их указано более одного, будет выброшено исключение
  • Можно использовать шаблоны индексов, но если они соответствуют более чем одному индексу свертки, будет выброшено исключение.

Это ограничение обусловлено логикой, которая определяет, какие задания являются «лучшими» для любого заданного запроса. Если в одном индексе хранится десять заданий, которые охватывают исходные данные с разной степенью полноты и различными интервалами, запросу необходимо определить, какой набор заданий фактически искать. Неверные решения могут привести к неточным результатам агрегации (например, к пересчёту количества документов или к плохим метрикам). Излишне говорить, что это технически сложный код.

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

Можно агрегировать только то, что было сохранено

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

Например, поле temperature в следующем запросе было сохранено в задании свертки… но не со метрикой avg. Это означает, что использование avg здесь не разрешено:

GET sensor_rollup/_rollup_search
{
  "size": 0,
  "aggregations": {
    "avg_temperature": {
      "avg": {
        "field": "temperature"
      }
    }
  }
}

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

{
  "error": {
    "root_cause": [
      {
        "type": "illegal_argument_exception",
        "reason": "There is not a rollup job that has a [avg] agg with name [avg_temperature] which also satisfies all requirements of query.",
        "stack_trace": ...
      }
    ],
    "type": "illegal_argument_exception",
    "reason": "There is not a rollup job that has a [avg] agg with name [avg_temperature] which also satisfies all requirements of query.",
    "stack_trace": ...
  },
  "status": 400
}

Точность интервала

Свертки хранятся с определённой точностью, как определено группой date_histogram в конфигурации. Это означает, что вы можете искать/агрегировать данные свертки только с интервалом, который больше или равен конфигурированному интервалу свертки.

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

Запросы должны быть кратными конфигурации

Возможно, не сразу очевидно, но интервал, указанный в запросе агрегации, должен быть целым кратным настроенному интервалу. Если задание было настроено на сводку данных с интервалами 3d, вы можете запросить и агрегировать только с кратными трём (3d, 6d, 9d и т.д.).

Не кратные значения не будут работать, так как свёрнутые данные не будут «перекрываться» с корзинами, созданными агрегацией, что приведёт к неточным результатам.

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

Поскольку конечная точка RollupSearch может «увеличивать» интервалы, нет необходимости настраивать задания с несколькими интервалами (по часам, по дням и т.д.). Рекомендуется настроить только одно задание с наименьшей необходимой точностью и позволить конечной точке поиска увеличивать масштаб по мере необходимости.

Тем не менее, если в одном индексе свертки присутствуют несколько заданий с разными интервалами, конечная точка поиска определит и использует задание(я) с самым большим интервалом для удовлетворения запроса поиска.

Ограниченные компоненты запросов

Функциональность свертки позволяет использовать query в запросе поиска, но с ограниченным подмножеством компонентов. В настоящее время разрешены следующие типы запросов:

  • Запрос Term
  • Запрос Terms
  • Запрос Range
  • Запрос MatchAll
  • Любой составной запрос (булевы, с усилением, ConstantScore и т.д.)

Кроме того, эти запросы могут использовать только поля, которые также были сохранены в задании свертки в качестве group. Если вы хотите отфильтровать по ключевому полю hostname, это поле должно быть настроено в задании свертки в рамках группировки terms.

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

Часовые пояса

Документы свертки хранятся в часовом поясе конфигурации группы date_histogram в задании. Если часовой пояс не указан, по умолчанию используется UTC для сводки временных меток.

© 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/rollup-search-limitations.html

Spec-Zone.ru

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