Spec-Zone.ru › Elasticsearch 8
›Руководство по Elasticsearch [8.17] ›ES|QL

Ограничения ES|QL

Предел размера набора результатов

По умолчанию запрос ES|QL возвращает до 1000 строк. Вы можете увеличить количество строк до 10 000, используя команду LIMIT. Запросы не возвращают более 10 000 строк, независимо от значения команды LIMIT.

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

Чтобы преодолеть это ограничение:

  • Уменьшите размер набора результатов, изменив запрос, чтобы возвращать только релевантные данные. Используйте WHERE для выбора меньшего подмножества данных.
  • Перенесите любые последующие операции обработки после запроса в сам запрос. Вы можете использовать команду ES|QL STATS для агрегации данных в запросе.

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

  • esql.query.result_truncation_default_size
  • esql.query.result_truncation_max_size

Типы полей

Поддерживаемые типы

ES|QL в настоящее время поддерживает следующие типы полей:

  • alias
  • boolean
  • date
  • date_nanos (Предварительный просмотр)

    • Следующие функции пока не поддерживают наносекунды для дат: bucket, date_format, date_parse, date_diff, date_extract
    • Вы можете использовать to_datetime для приведения к датам в миллисекундах, чтобы использовать недоступные функции
  • double (float, half_float, scaled_float представлены как double)
  • ip
  • Семья типов keyword, включая keyword, constant_keyword и wildcard
  • int (short и byte представлены как int)
  • long
  • null
  • text
  • [preview] Данная функциональность находится в стадии технического предварительного просмотра и может быть изменена или удалена в будущих выпусках. Elastic будет работать над устранением любых проблем, но функции предварительного просмотра не подпадают под SLA поддержки официальных функций GA. unsigned_long
  • version
  • Пространственные типы

    • geo_point
    • geo_shape
    • point
    • shape

Неподдерживаемые типы

ES|QL пока не поддерживает следующие типы полей:

  • Метрики TSDB

    • counter
    • position
    • aggregate_metric_double
  • Дата/время

    • date_range
  • Другие типы

    • binary
    • completion
    • dense_vector
    • double_range
    • flattened
    • float_range
    • histogram
    • integer_range
    • ip_range
    • long_range
    • nested
    • rank_feature
    • rank_features
    • search_as_you_type

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

Ограничения поддерживаемых типов

Некоторые типы полей не поддерживаются во всех контекстах:

  • Пространственные типы не поддерживаются в команде обработки SORT. Указание столбца одного из этих типов в качестве параметра сортировки приведет к ошибке:

    • geo_point
    • geo_shape
    • cartesian_point
    • cartesian_shape

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

Доступность _source

ES|QL не поддерживает конфигурации, где поле _source выключено.

[preview] Данная функциональность находится в стадии технического предварительного просмотра и может быть изменена или удалена в будущих выпусках. Elastic будет работать над устранением любых проблем, но функции предварительного просмотра не подпадают под SLA поддержки официальных функций GA. Поддержка ES|QL для синтетического _source в настоящее время находится на экспериментальной стадии.

Полный поиск по тексту

[preview] Данная функциональность находится в стадии технического предварительного просмотра и может быть изменена или удалена в будущих выпусках. Elastic будет работать над устранением любых проблем, но функции предварительного просмотра не подпадают под SLA поддержки официальных функций GA. Поддержка ES|QL для поиска по полному тексту в настоящее время находится на стадии технического предварительного просмотра. Одно ограничение поиска по полному тексту заключается в том, что необходимо использовать функцию поиска, например MATCH, в команде WHERE непосредственно после команды источника FROM или достаточно близко к ней. В противном случае запрос завершится ошибкой проверки. Еще одно ограничение заключается в том, что любая команда WHERE, содержащая функцию поиска по полному тексту, не может также использовать дизъюнкции (OR).

Из-за способа обработки ES|QL значений text, запросы к полям text аналогичны запросам к полям keyword: они чувствительны к регистру и должны точно соответствовать строке.

Например, после индексирования поля типа text со значением Elasticsearch query language, следующее условие WHERE не соответствует, потому что оператор LIKE чувствителен к регистру:

| WHERE field LIKE "elasticsearch query language"

Следующее условие WHERE также не соответствует, так как оператор LIKE пытается сопоставить всю строку:

| WHERE field LIKE "Elasticsearch"

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

| WHERE field RLIKE "[Ee]lasticsearch.*"

text поля ведут себя как поля keyword

Хотя ES|QL поддерживает text поля, ES|QL не обрабатывает эти поля так же, как Search API. ES|QL запросы не выполняют запрос или агрегацию анализированной строки. Вместо этого запрос ES|QL попытается получить подполе поля text семейства типов keyword и выполнить запрос/агрегацию по нему. Если невозможно получить подполе keyword, ES|QL получит строку из документа _source. Если _source не может быть получен, например, при использовании синтетического источника, возвращается null.

Обратите внимание, что получение подполей keyword ES|QL может иметь непредвиденные последствия. ES|QL запрос к полю text чувствителен к регистру. Кроме того, подполе может быть отображено с нормализатором, который может преобразовать исходную строку. Или оно может быть отображено с ignore_above, что может усекать строку. Ни одна из этих операций отображения не применяется к запросу ES|QL, что может привести к ложным положительным или отрицательным результатам.

Чтобы избежать этих проблем, рекомендуется явно указывать запрашиваемое поле и выполнять запрос к подполям keyword вместо полей text.

Потоки данных временных рядов не поддерживаются

ES|QL не поддерживает запросы к потокам данных временных рядов (TSDS).

Ограничения даты и времени

Выражения для работы с датами и временем работают хорошо, когда левым выражением является значение даты и времени, например:

now() + 1 year - 2hour + ...

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

1year + 2hour + now()
now() + (1year + 2hour)

Вычитание двух значений даты и времени не разрешено, например:

now() - 2023-10-26

Ограничения обогащения

Хотя все три типа политик обогащения поддерживаются, следует учитывать некоторые ограничения:

  • Тип политики обогащения geo_match поддерживает только пространственное отношение intersects.
  • Необходимо, чтобы поле match_field в команде ENRICH имело правильный тип. Например, если политика обогащения имеет тип geo_match, поле match_field в команде ENRICH должно быть типа geo_point или geo_shape. Аналогично, политика обогащения типа range требует поля match_field типа integer, long, date или ip, в зависимости от типа поля диапазона в исходном индексе обогащения.
  • Однако это ограничение смягчается для политик range, когда поле match_field имеет тип KEYWORD. В этом случае значения поля будут анализироваться во время выполнения запроса, по строке. Если какое-либо значение не удаётся проанализировать, значения выходных данных для этой строки будут установлены в null, будет выведено соответствующее предупреждение, и запрос продолжит выполняться.

Ограничения анализа

Команда DISSECT не поддерживает ключи ссылок.

Ограничения Grok

Команда GROK не поддерживает настройку пользовательских шаблонов или нескольких шаблонов. Команда GROK не подчиняется настройкам Grok watchdog.

Ограничения многозначных полей

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

Поддержка часовых поясов

ES|QL поддерживает только часовой пояс UTC.

Ограничения Kibana

  • Интерфейс пользователя для фильтрации данных не активирован, когда Discover находится в режиме ES|QL. Чтобы отфильтровать данные, напишите запрос, который использует команду WHERE.
  • Discover отображает не более 10 000 строк. Это ограничение относится только к количеству строк, полученных запросом и отображённых в Discover. Запросы и агрегации выполняются на полном наборе данных.
  • Discover отображает не более 50 столбцов. Если запрос возвращает более 50 столбцов, Discover отображает только первые 50.
  • Экспорт CSV из Discover отображает не более 10 000 строк. Это ограничение относится только к количеству строк, полученных запросом и отображённых в Discover. Запросы и агрегации выполняются на полном наборе данных.
  • Запрос к множеству индексов одновременно без фильтров может привести к ошибке в Kibana, которая выглядит как [esql] > Unexpected error from Elasticsearch: The content length (536885793) is bigger than the maximum allowed string (536870888). Ответ от ES|QL слишком длинный. Используйте DROP или KEEP для ограничения количества возвращаемых полей.

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

Spec-Zone.ru

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