Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Руководство [8.17] ›ES|QL ›Справочник ES|QL

Функции и операторы ES|QL

ES|QL предоставляет полный набор функций и операторов для работы с данными. Справочная документация разделена на следующие категории:

Обзор функций

Функции агрегирования
  • AVG
  • COUNT
  • COUNT_DISTINCT
  • MAX
  • MEDIAN
  • MEDIAN_ABSOLUTE_DEVIATION
  • MIN
  • PERCENTILE
  • [preview] Данная функциональность находится в предварительном техническом режиме и может быть изменена или удалена в будущих релизах. Elastic будет работать над исправлением любых проблем, но функции в предварительном техническом режиме не подпадают под SLA поддержки официальных функций GA. ST_CENTROID_AGG
  • SUM
  • TOP
  • VALUES
  • WEIGHTED_AVG
Функции группировки
  • BUCKET
Условные функции и выражения
  • CASE
  • COALESCE
  • GREATEST
  • LEAST
Функции дат и времени
  • DATE_DIFF
  • DATE_EXTRACT
  • DATE_FORMAT
  • DATE_PARSE
  • DATE_TRUNC
  • NOW
Функции IP-адресов
  • CIDR_MATCH
  • IP_PREFIX
Математические функции
  • ABS
  • ACOS
  • ASIN
  • ATAN
  • ATAN2
  • CBRT
  • CEIL
  • COS
  • COSH
  • E
  • EXP
  • FLOOR
  • HYPOT
  • LOG
  • LOG10
  • PI
  • POW
  • ROUND
  • SIGNUM
  • SIN
  • SINH
  • SQRT
  • TAN
  • TANH
  • TAU
Функции поиска
  • [превью] Данная функциональность находится в стадии технического превью и может быть изменена или удалена в будущих выпусках. Elastic будет работать над устранением любых проблем, но функции в техническом превью не подпадают под SLA поддержки официальных функций GA. MATCH
  • [превью] Данная функциональность находится в стадии технического превью и может быть изменена или удалена в будущих выпусках. Elastic будет работать над устранением любых проблем, но функции в техническом превью не подпадают под SLA поддержки официальных функций GA. QSTR
Пространственные функции
  • ST_DISTANCE
  • ST_INTERSECTS
  • ST_DISJOINT
  • ST_CONTAINS
  • ST_WITHIN
  • ST_X
  • ST_Y
Функции строк
  • BIT_LENGTH
  • BYTE_LENGTH
  • CONCAT
  • ENDS_WITH
  • FROM_BASE64
  • LEFT
  • LENGTH
  • LOCATE
  • LTRIM
  • REPEAT
  • REPLACE
  • REVERSE
  • RIGHT
  • RTRIM
  • SPACE
  • SPLIT
  • STARTS_WITH
  • SUBSTRING
  • TO_BASE64
  • TO_LOWER
  • TO_UPPER
  • TRIM
Функции преобразования типов
  • TO_BOOLEAN
  • TO_CARTESIANPOINT
  • TO_CARTESIANSHAPE
  • [preview] Данная функция находится в техническом предварительном режиме и может быть изменена или удалена в будущих релизах. Elastic будет работать над исправлением любых проблем, но функции в техническом предварительном режиме не подпадают под SLA поддержки официальных функций GA. TO_DATEPERIOD
  • TO_DATETIME
  • TO_DEGREES
  • TO_DOUBLE
  • TO_GEOPOINT
  • TO_GEOSHAPE
  • TO_INTEGER
  • TO_IP
  • TO_LONG
  • TO_RADIANS
  • TO_STRING
  • [preview] Данная функция находится в техническом предварительном режиме и может быть изменена или удалена в будущих релизах. Elastic будет работать над исправлением любых проблем, но функции в техническом предварительном режиме не подпадают под SLA поддержки официальных функций GA. TO_TIMEDURATION
  • [preview] Данная функция находится в техническом предварительном режиме и может быть изменена или удалена в будущих релизах. Elastic будет работать над исправлением любых проблем, но функции в техническом предварительном режиме не подпадают под SLA поддержки официальных функций GA. TO_UNSIGNED_LONG
  • TO_VERSION
Функции с множественными значениями
  • MV_APPEND
  • MV_AVG
  • MV_CONCAT
  • MV_COUNT
  • MV_DEDUPE
  • MV_FIRST
  • MV_LAST
  • MV_MAX
  • MV_MEDIAN
  • MV_MEDIAN_ABSOLUTE_DEVIATION
  • MV_MIN
  • MV_PERCENTILE
  • MV_PSERIES_WEIGHTED_SUM
  • MV_SORT
  • MV_SLICE
  • MV_SUM
  • MV_ZIP

Обзор операторов

Операторы
  • Бинарные операторы
  • Унарные операторы
  • Логические операторы
  • Предикаты IS NULL и IS NOT NULL
  • Оператор приведения типов (::)
  • Оператор IN
  • Оператор LIKE
  • Оператор RLIKE
  • [превью] Данная функциональность находится на стадии технического превью и может быть изменена или удалена в будущих выпусках. Elastic будет работать над устранением любых проблем, однако функциональность на стадии технического превью не подпадает под SLA поддержки официальных функций GA. Операторы поиска

Функции агрегирования ES|QL

Команда STATS поддерживает эти функции агрегирования:

  • AVG
  • COUNT
  • COUNT_DISTINCT
  • MAX
  • MEDIAN
  • MEDIAN_ABSOLUTE_DEVIATION
  • MIN
  • PERCENTILE
  • [preview] Данная функциональность находится на стадии технического предварительного просмотра и может быть изменена или удалена в будущих выпусках. Elastic будет работать над устранением любых проблем, но функции на стадии технического предварительного просмотра не подпадают под SLA поддержки официальных функций GA. ST_CENTROID_AGG
  • SUM
  • TOP
  • VALUES
  • WEIGHTED_AVG

AVG

Синтаксис

AVG(число)

Параметры

number

Описание

Среднее значение числового поля.

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

число результат

double

double

integer

double

long

double

Примеры

FROM employees
| STATS AVG(height)
AVG(height):double

1.7682

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

FROM employees
| STATS avg_salary_change = ROUND(AVG(MV_AVG(salary_change)), 10)
avg_salary_change:double

1.3904535865

COUNT

Синтаксис

COUNT(поле)

Параметры

field
Выражение, которое выводит значения, подлежащие подсчёту. Если опущено, эквивалентно COUNT(*) (количеству строк).

Описание

Возвращает общее количество (счёт) входных значений.

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

поле результат

boolean

long

cartesian_point

long

date

long

double

long

geo_point

long

integer

long

ip

long

keyword

long

long

long

text

long

unsigned_long

long

version

long

Примеры

FROM employees
| STATS COUNT(height)
COUNT(height):long

100

Для подсчёта количества строк используйте COUNT() или COUNT(*)

FROM employees
| STATS count = COUNT(*) BY languages
| SORT languages DESC
count:long languages:integer

10

null

21

5

18

4

17

3

19

2

15

1

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

ROW words="foo;bar;baz;qux;quux;foo"
| STATS word_count = COUNT(SPLIT(words, ";"))
word_count:long

6

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

ROW n=1
| WHERE n < 0
| STATS COUNT(n)
COUNT(n):long

0

Чтобы подсчитать один и тот же поток данных на основе двух разных выражений, используйте шаблон COUNT(<expression> OR NULL). Это основано на трёхзначной логике (3VL) языка: TRUE OR NULL является TRUE, но FALSE OR NULL является NULL, плюс способ, которым COUNT обрабатывает NULL`s: `COUNT(TRUE) и COUNT(FALSE) оба равны 1, но COUNT(NULL) равен 0.

ROW n=1
| STATS COUNT(n > 0 OR NULL), COUNT(n < 0 OR NULL)
COUNT(n > 0 OR NULL):long COUNT(n < 0 OR NULL):long

1

0

COUNT_DISTINCT

Синтаксис

COUNT_DISTINCT(field,precision)

Параметры

field
Столбец или литерал, для которого необходимо подсчитать количество уникальных значений.
precision
Порог точности. См. Подсчёты приблизительные. Максимальное допустимое значение — 40000. Пороги выше этого значения будут иметь тот же эффект, что и порог в 40000. Значение по умолчанию — 3000.

Описание

Возвращает приблизительное количество уникальных значений.

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

field precision результат

boolean

integer

long

boolean

long

long

boolean

unsigned_long

long

boolean

long

date

integer

long

date

long

long

date

unsigned_long

long

date

long

date_nanos

integer

long

date_nanos

long

long

date_nanos

unsigned_long

long

date_nanos

long

double

integer

long

double

long

long

double

unsigned_long

long

double

long

integer

integer

long

integer

long

long

integer

unsigned_long

long

integer

long

ip

integer

long

ip

long

long

ip

unsigned_long

long

ip

long

keyword

integer

long

keyword

long

long

keyword

unsigned_long

long

keyword

long

long

integer

long

long

long

long

long

unsigned_long

long

long

long

text

integer

long

text

long

long

text

unsigned_long

long

text

long

version

integer

long

версия

длинное целое число

длинное целое число

версия

безознаковое длинное целое число

длинное целое число

версия

длинное целое число

Примеры

FROM hosts
| STATS COUNT_DISTINCT(ip0), COUNT_DISTINCT(ip1)
COUNT_DISTINCT(ip0):длинное целое число COUNT_DISTINCT(ip1):длинное целое число

7

8

С необязательным вторым параметром для настройки порога точности

FROM hosts
| STATS COUNT_DISTINCT(ip0, 80000), COUNT_DISTINCT(ip1, 5)
COUNT_DISTINCT(ip0, 80000):длинное целое число COUNT_DISTINCT(ip1, 5):длинное целое число

7

9

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

ROW words="foo;bar;baz;qux;quux;foo"
| STATS distinct_word_count = COUNT_DISTINCT(SPLIT(words, ";"))
distinct_word_count:длинное целое число

5

Подсчёты приблизительные

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

Эта COUNT_DISTINCT функция основана на алгоритме HyperLogLog++, который подсчитывает значения на основе хэшей с некоторыми интересными свойствами:

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

Для порога точности c, используемая нами реализация требует около c * 8 байт.

На следующей диаграмме показано, как меняется ошибка до и после порога:

cardinality error

Для всех 3 порогов подсчёты были точными до настроенного порога. Хотя это не гарантируется, это, вероятно, так. Точность на практике зависит от набора данных. В целом, большинство наборов данных демонстрируют последовательно хорошую точность. Также обратите внимание, что даже при пороге в 100 ошибка остаётся очень низкой (1-6%, как видно на графике выше), даже при подсчёте миллионов элементов.

Алгоритм HyperLogLog++ зависит от ведущих нулей хэшированных значений, точные распределения хэшей в наборе данных могут влиять на точность подсчёта.

Функция COUNT_DISTINCT принимает необязательный второй параметр для настройки порога точности. Параметры precision_threshold позволяют изменять память на точность и определяет уникальный подсчёт, ниже которого ожидается, что подсчёты будут близки к точным. Выше этого значения подсчёты могут быть несколько приближёнными. Максимальное поддерживаемое значение равно 40000, значения порога выше этого числа будут иметь тот же эффект, что и пороговое значение 40000. Значение по умолчанию равно 3000.

MAX

Синтаксис

MAX(поле)

Параметры

field

Описание

Максимальное значение поля.

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

поле результат

boolean

boolean

date

date

date_nanos

date_nanos

double

double

integer

integer

ip

ip

keyword

keyword

long

long

text

keyword

version

version

Примеры

FROM employees
| STATS MAX(languages)
MAX(languages):integer

5

Выражение может использовать встроенные функции. Например, для вычисления максимального значения по среднему значению многозначного столбца, сначала воспользуйтесь MV_AVG для вычисления среднего значения по нескольким значениям в строке, а затем используйте результат с функцией MAX.

FROM employees
| STATS max_avg_salary_change = MAX(MV_AVG(salary_change))
max_avg_salary_change:double

13.75

MEDIAN

Синтаксис

MEDIAN(число)

Параметры

number

Описание

Значение, которое больше половины всех значений и меньше половины всех значений, также известное как 50%-й PERCENTILE.

Подобно PERCENTILE, MEDIAN обычно является приближенным.

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

число результат

double

double

integer

double

long

double

Примеры

FROM employees
| STATS MEDIAN(salary), PERCENTILE(salary, 50)
MEDIAN(salary):double PERCENTILE(salary, 50):double

47003

47003

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

FROM employees
| STATS median_max_salary_change = MEDIAN(MV_MAX(salary_change))
median_max_salary_change:double

7.69

MEDIAN также является недетерминированным. Это означает, что вы можете получить немного разные результаты, используя те же данные.

MEDIAN_ABSOLUTE_DEVIATION

Синтаксис

MEDIAN_ABSOLUTE_DEVIATION(number)

Параметры

number

Описание

Возвращает медианное абсолютное отклонение, показатель изменчивости. Это устойчивая статистика, что означает, что она полезна для описания данных, которые могут содержать выбросы или не подчиняться нормальному распределению. Для таких данных она может быть более информативной, чем стандартное отклонение. Она вычисляется как медиана отклонений каждого значения данных от медианы всего образца. То есть, для случайной величины X, медианное абсолютное отклонение равно median(|median(X) - X|).

Как и PERCENTILE, MEDIAN_ABSOLUTE_DEVIATION обычно является приближенным.

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

number результат

double

double

integer

double

long

double

Примеры

FROM employees
| STATS MEDIAN(salary), MEDIAN_ABSOLUTE_DEVIATION(salary)
MEDIAN(salary):double MEDIAN_ABSOLUTE_DEVIATION(salary):double

47003

10096.5

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

FROM employees
| STATS m_a_d_max_salary_change = MEDIAN_ABSOLUTE_DEVIATION(MV_MAX(salary_change))
m_a_d_max_salary_change:double

5.69

MEDIAN_ABSOLUTE_DEVIATION также является недетерминированным. Это означает, что вы можете получить немного разные результаты, используя те же данные.

MIN

Синтаксис

MIN(field)

Параметры

field

Описание

Минимальное значение поля.

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

поле результат

boolean

boolean

date

date

date_nanos

date_nanos

double

double

integer

integer

ip

ip

keyword

keyword

long

long

text

keyword

version

version

Примеры

FROM employees
| STATS MIN(languages)
MIN(languages):integer

1

Выражение может использовать встроенные функции. Например, для вычисления минимума по среднему значению многозначного столбца, используйте MV_AVG, чтобы сначала усреднить несколько значений в каждой строке, и используйте результат с функцией MIN.

FROM employees
| STATS min_avg_salary_change = MIN(MV_AVG(salary_change))
min_avg_salary_change:double

-8.46

PERCENTILE

Синтаксис

PERCENTILE(number,percentile)

Параметры

number
percentile

Описание

Возвращает значение, при котором определённый процент наблюдаемых значений. Например, 95-й перцентиль — это значение, которое больше 95% наблюдаемых значений, а 50-й перцентиль — это MEDIAN.

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

число перцентиль результат

double

double

double

double

integer

double

double

long

double

integer

double

double

integer

integer

double

integer

long

double

long

double

double

long

integer

double

long

long

double

Примеры

FROM employees
| STATS p0 = PERCENTILE(salary,  0)
     , p50 = PERCENTILE(salary, 50)
     , p99 = PERCENTILE(salary, 99)
p0:double p50:double p99:double

25324

47003

74970.29

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

FROM employees
| STATS p80_max_salary_change = PERCENTILE(MV_MAX(salary_change), 80)
p80_max_salary_change:double

12.132

PERCENTILE (обычно) приблизительно

Существует множество различных алгоритмов для вычисления процентилей. Примитивное решение просто хранит все значения в отсортированном массиве. Чтобы найти 50-й процентиль, нужно просто найти значение, находящееся на позиции my_array[count(my_array) * 0.5].

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

Алгоритм, используемый метрикой percentile, называется TDigest (представленный Тедом Даннингом в Computing Accurate Quantiles using T-Digests).

При использовании этой метрики следует учитывать несколько рекомендаций:

  • Точность пропорциональна q(1-q). Это означает, что крайние процентили (например, 99%) более точные, чем менее крайние процентили, такие как медиана
  • Для небольших наборов значений процентили очень точны (и потенциально 100% точные, если данные достаточно малы).
  • По мере увеличения количества значений в корзине алгоритм начинает приближать процентили. Он фактически жертвует точностью ради экономии памяти. Точный уровень неточности трудно обобщить, так как он зависит от распределения данных и объёма агрегируемых данных

На следующем графике показана относительная ошибка на равномерном распределении в зависимости от количества собранных значений и запрашиваемого процентиля:

percentiles error

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

PERCENTILE также является недетерминированным. Это означает, что вы можете получать немного разные результаты, используя одни и те же данные.

ST_CENTROID_AGG

Синтаксис

ST_CENTROID_AGG(поле)

Параметры

field

Описание

Вычислить пространственный центр тяжести по полю с пространственной геометрией типа точки.

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

поле результат

cartesian_point

cartesian_point

geo_point

geo_point

Пример

FROM airports
| STATS centroid=ST_CENTROID_AGG(location)
centroid:geo_point

POINT(-0.030548143003023033 24.37553649504829)

SUM

Синтаксис

SUM(number)

Параметры

number

Описание

Сумма числового выражения.

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

number результат

double

double

integer

long

long

long

Примеры

FROM employees
| STATS SUM(languages)
SUM(languages):long

281

Выражение может использовать встроенные функции. Например, чтобы вычислить сумму изменений максимальной зарплаты каждого сотрудника, примените функцию MV_MAX к каждой строке, а затем просуммируйте результаты.

FROM employees
| STATS total_salary_changes = SUM(MV_MAX(salary_change))
total_salary_changes:double

446.75

TOP

Синтаксис

TOP(field,limit,order)

Параметры

field
Поле для сбора наибольших значений.
limit
Максимальное количество значений для сбора.
order
Порядок вычисления наибольших значений. Либо asc, либо desc.

Описание

Сбор наибольших значений для поля. Включает повторяющиеся значения.

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

Поле Предел Порядок Результат

boolean

integer

ключевое слово

boolean

дата

integer

ключевое слово

дата

double

integer

ключевое слово

double

integer

integer

ключевое слово

integer

ip

integer

ключевое слово

ip

ключевое слово

integer

ключевое слово

ключевое слово

long

integer

ключевое слово

long

текст

integer

ключевое слово

ключевое слово

Пример

FROM employees
| STATS top_salaries = TOP(salary, 3, "desc"), top_salary = MAX(salary)
top_salaries:integer top_salary:integer

[74999, 74970, 74572]

74999

VALUES

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

Синтаксис

VALUES(field)

Параметры

field

Описание

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

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

Поле Результат

boolean

boolean

дата

дата

date_nanos

date_nanos

double

double

integer

integer

ip

ip

ключевое слово

ключевое слово

long

long

текст

ключевое слово

версия

версия

Пример

  FROM employees
| EVAL first_letter = SUBSTRING(first_name, 0, 1)
| STATS first_name=MV_SORT(VALUES(first_name)) BY first_letter
| SORT first_letter
first_name:keyword first_letter:keyword

[Alejandro, Amabile, Anneke, Anoosh, Arumugam]

A

[Basil, Berhard, Berni, Bezalel, Bojan, Breannda, Brendon]

B

[Charlene, Chirstian, Claudi, Cristinel]

C

[Danel, Divier, Domenick, Duangkaew]

D

[Ebbe, Eberhardt, Erez]

E

Florian

F

[Gao, Georgi, Georgy, Gino, Guoxiang]

G

[Heping, Hidefumi, Hilari, Hironobu, Hironoby, Hisao]

H

[Jayson, Jungsoon]

J

[Kazuhide, Kazuhito, Kendra, Kenroku, Kshitij, Kwee, Kyoichi]

K

[Lillian, Lucien]

L

[Magy, Margareta, Mary, Mayuko, Mayumi, Mingsen, Mokhtar, Mona, Moss]

M

Otmar

O

[Parto, Parviz, Patricio, Prasadram, Premal]

P

[Ramzi, Remzi, Reuven]

R

[Sailaja, Saniya, Sanjiv, Satosi, Shahaf, Shir, Somnath, Sreekrishna, Sudharsan, Sumant, Suzette]

S

[Tse, Tuval, Tzvetan]

T

[Udi, Uri]

U

[Valdiodio, Valter, Vishv]

V

Weiyi

W

Xinglin

X

[Yinghua, Yishay, Yongqiao]

Y

[Zhongwei, Zvonko]

Z

null

null

Это может потребовать значительного объёма памяти, и ES|QL пока не поддерживает агрегацию за пределами памяти. Поэтому эта агрегация будет работать, пока не будет использована для сбора большего количества значений, чем может поместиться в памяти. Как только будет собрано слишком много значений, запрос завершится ошибкой Circuit Breaker Error.

WEIGHTED_AVG

Синтаксис

WEIGHTED_AVG(number,weight)

Параметры

number
Численное значение.
weight
Численное значение веса.

Описание

Взвешенное среднее значение числового выражения.

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

число вес результат

double

double

double

double

integer

double

double

long

double

integer

double

double

integer

integer

double

integer

long

double

long

double

double

long

integer

double

long

long

double

Пример

FROM employees
| STATS w_avg = WEIGHTED_AVG(salary, height) by languages
| EVAL w_avg = ROUND(w_avg)
| KEEP w_avg, languages
| SORT languages
w_avg:double languages:integer

51464.0

1

48477.0

2

52379.0

3

47990.0

4

42119.0

5

52142.0

null

Функции группировки ES|QL

Команда STATS поддерживает следующие функции группировки:

  • BUCKET

BUCKET

Синтаксис

BUCKET(поле,ведерки,от,до)

Параметры

field
Численное или временное выражение, из которого должны быть получены ведерки.
buckets
Целевое количество ведер или желаемый размер ведра, если параметры from и to опущены.
from
Начало диапазона. Может быть числом, датой или датой, выраженной строкой.
to
Конец диапазона. Может быть числом, датой или датой, выраженной строкой.

Описание

Создает группы значений — ведерки — из входных данных в формате даты или числа. Размер ведер может быть задан непосредственно или выбран на основе рекомендуемого количества и диапазона значений.

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

поле ведерки от до результат

дата

период_дат

дата

дата

целое

дата

дата

дата

дата

целое

дата

ключевое_слово

дата

дата

целое

дата

текст

дата

дата

целое

ключевое_слово

дата

дата

дата

целое

ключевое_слово

ключевое_слово

дата

дата

целое

ключевое_слово

текст

дата

дата

целое

текст

дата

дата

дата

целое

текст

ключевое_слово

дата

дата

целое

текст

текст

дата

дата

продолжительность_времени

дата

двойное

двойное

двойное

двойное

целое

двойное

двойное

двойное

двойное

целое

двойное

целое

двойное

двойное

целое

двойное

длинное

двойное

двойное

целое

целое

двойное

двойное

двойное

целое

целое

целое

двойное

двойное

целое

целое

длинное

двойное

двойное

целое

длинное

двойное

двойное

двойное

целое

длинное

целое

двойное

двойное

целое

длинное

длинное

двойное

двойное

целое

двойное

двойное

длинное

двойное

целое число

вещественное число

вещественное число

целое число

целое число

вещественное число

вещественное число

вещественное число

целое число

целое число

вещественное число

целое число

вещественное число

целое число

целое число

вещественное число

длинное целое число

вещественное число

целое число

целое число

вещественное число

вещественное число

вещественное число

целое число

целое число

целое число

целое число

вещественное число

целое число

целое число

целое число

длинное целое число

вещественное число

целое число

целое число

длинное целое число

вещественное число

вещественное число

целое число

целое число

длинное целое число

целое число

вещественное число

целое число

целое число

длинное целое число

длинное целое число

вещественное число

целое число

целое число

вещественное число

целое число

длинное целое число

вещественное число

длинное целое число

вещественное число

вещественное число

длинное целое число

целое число

вещественное число

вещественное число

вещественное число

длинное целое число

целое число

вещественное число

целое число

вещественное число

длинное целое число

целое число

вещественное число

длинное целое число

вещественное число

длинное целое число

целое число

целое число

вещественное число

вещественное число

длинное целое число

целое число

целое число

целое число

вещественное число

длинное целое число

целое число

целое число

длинное целое число

вещественное число

длинное целое число

целое число

длинное целое число

вещественное число

вещественное число

длинное целое число

целое число

длинное целое число

целое число

вещественное число

длинное целое число

целое число

длинное целое число

длинное целое число

вещественное число

длинное целое число

целое число

вещественное число

long

long

double

Примеры

BUCKET может работать в двух режимах: в одном режиме размер корзины вычисляется на основе рекомендации по количеству корзин (четыре параметра) и диапазона, а в другом режиме размер корзины предоставляется напрямую (два параметра).

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

FROM employees
| WHERE hire_date >= "1985-01-01T00:00:00Z" AND hire_date < "1986-01-01T00:00:00Z"
| STATS hire_date = MV_SORT(VALUES(hire_date)) BY month = BUCKET(hire_date, 20, "1985-01-01T00:00:00Z", "1986-01-01T00:00:00Z")
| SORT hire_date
hire_date:date month:date

[1985-02-18T00:00:00.000Z, 1985-02-24T00:00:00.000Z]

1985-02-01T00:00:00.000Z

1985-05-13T00:00:00.000Z

1985-05-01T00:00:00.000Z

1985-07-09T00:00:00.000Z

1985-07-01T00:00:00.000Z

1985-09-17T00:00:00.000Z

1985-09-01T00:00:00.000Z

[1985-10-14T00:00:00.000Z, 1985-10-20T00:00:00.000Z]

1985-10-01T00:00:00.000Z

[1985-11-19T00:00:00.000Z, 1985-11-20T00:00:00.000Z, 1985-11-21T00:00:00.000Z]

1985-11-01T00:00:00.000Z

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

Объедините BUCKET с агрегацией, чтобы создать гистограмму:

FROM employees
| WHERE hire_date >= "1985-01-01T00:00:00Z" AND hire_date < "1986-01-01T00:00:00Z"
| STATS hires_per_month = COUNT(*) BY month = BUCKET(hire_date, 20, "1985-01-01T00:00:00Z", "1986-01-01T00:00:00Z")
| SORT month
hires_per_month:long month:date

2

1985-02-01T00:00:00.000Z

1

1985-05-01T00:00:00.000Z

1

1985-07-01T00:00:00.000Z

1

1985-09-01T00:00:00.000Z

2

1985-10-01T00:00:00.000Z

4

1985-11-01T00:00:00.000Z

BUCKET не создаёт корзины, которые не соответствуют ни одному документу. Вот почему в этом примере отсутствуют 1985-03-01 и другие даты.

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

FROM employees
| WHERE hire_date >= "1985-01-01T00:00:00Z" AND hire_date < "1986-01-01T00:00:00Z"
| STATS hires_per_week = COUNT(*) BY week = BUCKET(hire_date, 100, "1985-01-01T00:00:00Z", "1986-01-01T00:00:00Z")
| SORT week
hires_per_week:long week:date

2

1985-02-18T00:00:00.000Z

1

1985-05-13T00:00:00.000Z

1

1985-07-08T00:00:00.000Z

1

1985-09-16T00:00:00.000Z

2

1985-10-14T00:00:00.000Z

4

1985-11-18T00:00:00.000Z

BUCKET не фильтрует какие-либо строки. Он просто использует предоставленный диапазон для выбора хорошего размера корзины. Для строк со значением вне диапазона он возвращает значение корзины, соответствующее корзине вне диапазона. Объедините `BUCKET` с WHERE, чтобы отфильтровать строки.

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

FROM employees
| WHERE hire_date >= "1985-01-01T00:00:00Z" AND hire_date < "1986-01-01T00:00:00Z"
| STATS hires_per_week = COUNT(*) BY week = BUCKET(hire_date, 1 week)
| SORT week
hires_per_week:long week:date

2

1985-02-18T00:00:00.000Z

1

1985-05-13T00:00:00.000Z

1

1985-07-08T00:00:00.000Z

1

1985-09-16T00:00:00.000Z

2

1985-10-14T00:00:00.000Z

4

1985-11-18T00:00:00.000Z

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

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

FROM employees
| STATS COUNT(*) by bs = BUCKET(salary, 20, 25324, 74999)
| SORT bs
COUNT(*):long bs:double

9

25000.0

9

30000.0

18

35000.0

11

40000.0

11

45000.0

10

50000.0

7

55000.0

9

60000.0

8

65000.0

8

70000.0

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

Диапазон можно опустить, если размер требуемого интервала известен заранее. Просто укажите его как второй аргумент:

FROM employees
| WHERE hire_date >= "1985-01-01T00:00:00Z" AND hire_date < "1986-01-01T00:00:00Z"
| STATS c = COUNT(1) BY b = BUCKET(salary, 5000.)
| SORT b
c:long b:double

1

25000.0

1

30000.0

1

40000.0

2

45000.0

2

50000.0

1

55000.0

1

60000.0

1

65000.0

1

70000.0

Создайте часовые интервалы для последних 24 часов и вычислите количество событий за каждый час:

FROM sample_data
| WHERE @timestamp >= NOW() - 1 day and @timestamp < NOW()
| STATS COUNT(*) BY bucket = BUCKET(@timestamp, 25, NOW() - 1 day, NOW())
COUNT(*):long bucket:date

Создайте ежемесячные интервалы для 1985 года и вычислите среднюю заработную плату по месяцу найма:

FROM employees
| WHERE hire_date >= "1985-01-01T00:00:00Z" AND hire_date < "1986-01-01T00:00:00Z"
| STATS AVG(salary) BY bucket = BUCKET(hire_date, 20, "1985-01-01T00:00:00Z", "1986-01-01T00:00:00Z")
| SORT bucket
AVG(salary):double bucket:date

46305.0

1985-02-01T00:00:00.000Z

44817.0

1985-05-01T00:00:00.000Z

62405.0

1985-07-01T00:00:00.000Z

49095.0

1985-09-01T00:00:00.000Z

51532.0

1985-10-01T00:00:00.000Z

54539.75

1985-11-01T00:00:00.000Z

BUCKET может использоваться как в агрегирующей, так и в группирующей части команды STATS …​ BY …​, при условии, что в агрегирующей части функция ссылается на псевдоним, определенный в группирующей части, или вызывается с точно таким же выражением:

FROM employees
| STATS s1 = b1 + 1, s2 = BUCKET(salary / 1000 + 999, 50.) + 2 BY b1 = BUCKET(salary / 100 + 99, 50.), b2 = BUCKET(salary / 1000 + 999, 50.)
| SORT b1, b2
| KEEP s1, b1, s2, b2
s1:double b1:double s2:double b2:double

351.0

350.0

1002.0

1000.0

401.0

400.0

1002.0

1000.0

451.0

450.0

1002.0

1000.0

501.0

500.0

1002.0

1000.0

551.0

550.0

1002.0

1000.0

601.0

600.0

1002.0

1000.0

601.0

600.0

1052.0

1050.0

651.0

650.0

1052.0

1050.0

701.0

700.0

1052.0

1050.0

751.0

750.0

1052.0

1050.0

801.0

800.0

1052.0

1050.0

Условные функции и выражения ES|QL

Условные функции возвращают один из своих аргументов, оценивая их по принципу if-else. ES|QL поддерживает следующие условные функции:

  • CASE
  • COALESCE
  • GREATEST
  • LEAST

CASE

Синтаксис

CASE(condition,trueValueelseValue)

Параметры

condition
Условие.
trueValue
Значение, возвращаемое, когда соответствующее условие первым оценивается как true. По умолчанию возвращается значение, если ни одно условие не соответствует.
elseValue
Значение, возвращаемое, когда ни одно условие не оценивается как true.

Описание

Принимает пары условий и значений. Функция возвращает значение, соответствующее первому условию, которое оценивается как true. Если количество аргументов нечетное, последний аргумент — значение по умолчанию, которое возвращается, если ни одно условие не соответствует. Если количество аргументов четное и ни одно условие не соответствует, функция возвращает null.

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

condition trueValue elseValue результат

boolean

boolean

boolean

boolean

boolean

boolean

boolean

boolean

cartesian_point

cartesian_point

cartesian_point

boolean

cartesian_point

cartesian_point

boolean

cartesian_shape

cartesian_shape

cartesian_shape

boolean

cartesian_shape

cartesian_shape

boolean

date

date

date

boolean

date

date

boolean

date_nanos

date_nanos

date_nanos

boolean

date_nanos

date_nanos

boolean

double

double

double

boolean

double

double

boolean

geo_point

geo_point

geo_point

boolean

geo_point

geo_point

boolean

geo_shape

geo_shape

geo_shape

boolean

geo_shape

geo_shape

boolean

integer

integer

integer

boolean

integer

integer

boolean

ip

ip

ip

boolean

ip

ip

boolean

keyword

keyword

keyword

boolean

keyword

text

keyword

boolean

keyword

keyword

boolean

long

long

long

boolean

long

long

boolean

text

keyword

keyword

boolean

text

text

keyword

boolean

text

keyword

boolean

unsigned_long

unsigned_long

unsigned_long

boolean

unsigned_long

unsigned_long

boolean

version

version

version

boolean

version

version

Примеры

Определите, являются ли сотрудники монолингвами, билингвами или полиглотами:

FROM employees
| EVAL type = CASE(
    languages <= 1, "monolingual",
    languages <= 2, "bilingual",
     "polyglot")
| KEEP emp_no, languages, type
emp_no:целое languages:целое type:ключевое слово

10001

2

билингва

10002

5

полиглот

10003

4

полиглот

10004

5

полиглот

10005

1

монолингва

Рассчитайте общий показатель успешности подключения на основе сообщений журнала:

FROM sample_data
| EVAL successful = CASE(
    STARTS_WITH(message, "Connected to"), 1,
    message == "Connection error", 0
  )
| STATS success_rate = AVG(successful)
success_rate:двойное

0.5

Рассчитайте часовой показатель ошибок в процентах от общего числа сообщений журнала:

FROM sample_data
| EVAL error = CASE(message LIKE "*error*", 1, 0)
| EVAL hour = DATE_TRUNC(1 hour, @timestamp)
| STATS error_rate = AVG(error) by hour
| SORT hour
error_rate:двойное hour:дата

0.0

2023-10-23T12:00:00.000Z

0.6

2023-10-23T13:00:00.000Z

COALESCE

Синтаксис

COALESCE(first,rest)

Параметры

first
Выражение для оценки.
rest
Другое выражение для оценки.

Описание

Возвращает первый из своих аргументов, который не равен null. Если все аргументы равны null, возвращает null.

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

first rest result

boolean

boolean

boolean

boolean

boolean

cartesian_point

cartesian_point

cartesian_point

cartesian_shape

cartesian_shape

cartesian_shape

date

date

date

date_nanos

date_nanos

date_nanos

geo_point

geo_point

geo_point

geo_shape

geo_shape

geo_shape

integer

integer

integer

integer

integer

ip

ip

ip

keyword

keyword

keyword

keyword

keyword

long

long

long

long

long

text

text

keyword

text

keyword

version

version

version

Пример

ROW a=null, b="b"
| EVAL COALESCE(a, b)
a:null b:keyword COALESCE(a, b):keyword

null

b

b

GREATEST

Синтаксис

GREATEST(first,rest)

Параметры

first
Первый из столбцов для оценки.
rest
Остальные столбцы для оценки.

Описание

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

При работе со столбцами keyword или text, возвращает последнюю строку в алфавитном порядке. При работе со столбцами boolean, возвращает true, если какие-либо значения являются true.

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

первый остальные результат

boolean

boolean

boolean

boolean

boolean

дата

дата

дата

дата_наносекунды

дата_наносекунды

дата_наносекунды

double

double

double

целое

целое

целое

целое

целое

ip

ip

ip

ключевое_слово

ключевое_слово

ключевое_слово

ключевое_слово

ключевое_слово

long

long

long

long

long

текст

текст

ключевое_слово

текст

ключевое_слово

версия

версия

версия

Пример

ROW a = 10, b = 20
| EVAL g = GREATEST(a, b)
a:целое b:целое g:целое

10

20

20

LEAST

Синтаксис

LEAST(первый,остальные)

Параметры

first
Первый из столбцов для оценки.
rest
Остальные столбцы для оценки.

Описание

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

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

первое остальные результат

boolean

boolean

boolean

boolean

boolean

дата

дата

дата

date_nanos

date_nanos

date_nanos

double

double

double

целое

целое

целое

целое

целое

ip

ip

ip

ключевое слово

ключевое слово

ключевое слово

ключевое слово

ключевое слово

long

long

long

long

long

текст

текст

ключевое слово

текст

ключевое слово

версия

версия

версия

Пример

ROW a = 10, b = 20
| EVAL l = LEAST(a, b)
a:целое b:целое l:целое

10

20

10

ES|QL функции даты и времени

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

  • DATE_DIFF
  • DATE_EXTRACT
  • DATE_FORMAT
  • DATE_PARSE
  • DATE_TRUNC
  • NOW

DATE_DIFF

Синтаксис

DATE_DIFF(unit,startTimestamp,endTimestamp)

Параметры

unit
Единица измерения разницы во времени
startTimestamp
Строка, представляющая начальную временную метку
endTimestamp
Строка, представляющая конечную временную метку

Описание

Вычитает startTimestamp из endTimestamp и возвращает разницу в кратных unit. Если startTimestamp позже, чем endTimestamp, возвращаются отрицательные значения.

Единицы измерения разницы во времени

unit

сокращения

год

годы, гг, гггг

квартал

кварталы, кв, к

месяц

месяцы, мм, м

день года

д, г

день

дни, дд, д

неделя

недели, нед, нн

день недели

дни недели, днн

час

часы, чч

минута

минуты, мин, н

секунда

секунды, сс, с

миллисекунда

миллисекунды, мс

микросекунда

микросекунды, мкс

наносекунда

наносекунды, нс

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

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

единица начальное время конечное время результат

ключевое слово

дата

дата

целое число

текст

дата

дата

целое число

Примеры

ROW date1 = TO_DATETIME("2023-12-02T11:00:00.000Z"), date2 = TO_DATETIME("2023-12-02T11:00:00.001Z")
| EVAL dd_ms = DATE_DIFF("microseconds", date1, date2)
date1:дата date2:дата dd_ms:целое число

2023-12-02T11:00:00.000Z

2023-12-02T11:00:00.001Z

1000

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

ROW end_23=TO_DATETIME("2023-12-31T23:59:59.999Z"),
  start_24=TO_DATETIME("2024-01-01T00:00:00.000Z"),
    end_24=TO_DATETIME("2024-12-31T23:59:59.999")
| EVAL end23_to_start24=DATE_DIFF("year", end_23, start_24)
| EVAL end23_to_end24=DATE_DIFF("year", end_23, end_24)
| EVAL start_to_end_24=DATE_DIFF("year", start_24, end_24)
end_23:дата start_24:дата end_24:дата end23_to_start24:целое число end23_to_end24:целое число start_to_end_24:целое число

2023-12-31T23:59:59.999Z

2024-01-01T00:00:00.000Z

2024-12-31T23:59:59.999Z

0

1

0

DATE_EXTRACT

Синтаксис

DATE_EXTRACT(datePart,date)

Параметры

datePart
Часть даты для извлечения. Может быть: aligned_day_of_week_in_month, aligned_day_of_week_in_year, aligned_week_of_month, aligned_week_of_year, ampm_of_day, clock_hour_of_ampm, clock_hour_of_day, day_of_month, day_of_week, day_of_year, epoch_day, era, hour_of_ampm, hour_of_day, instant_seconds, micro_of_day, micro_of_second, milli_of_day, milli_of_second, minute_of_day, minute_of_hour, month_of_year, nano_of_day, nano_of_second, offset_seconds, proleptic_month, second_of_day, second_of_minute, year или year_of_era. Обратитесь к java.time.temporal.ChronoField за описанием этих значений. Если null, функция возвращает null.
date
Выражение даты. Если null, функция возвращает null.

Описание

Извлекает части даты, такие как год, месяц, день, час.

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

datePart дата результат

ключевое слово

дата

длинное целое число

текст

дата

длинное целое число

Примеры

ROW date = DATE_PARSE("yyyy-MM-dd", "2022-05-06")
| EVAL year = DATE_EXTRACT("year", date)
date:date year:long

2022-05-06T00:00:00.000Z

2022

Найдите все события, произошедшие вне рабочего времени (до 9 утра или после 17:00), в любой заданный день:

FROM sample_data
| WHERE DATE_EXTRACT("hour_of_day", @timestamp) < 9 AND DATE_EXTRACT("hour_of_day", @timestamp) >= 17
@timestamp:date client_ip:ip event_duration:long message:keyword

DATE_FORMAT

Синтаксис

DATE_FORMAT(dateFormat,date)

Параметры

dateFormat
Формат даты (необязательно). Если формат не указан, используется формат yyyy-MM-dd'T'HH:mm:ss.SSSZ. Если null, функция возвращает null.
date
Выражение даты. Если null, функция возвращает null.

Описание

Возвращает строковое представление даты в указанном формате.

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

dateFormat date результат

ключевое слово

дата

ключевое слово

текст

дата

ключевое слово

Пример

FROM employees
| KEEP first_name, last_name, hire_date
| EVAL hired = DATE_FORMAT("yyyy-MM-dd", hire_date)
first_name:ключевое слово last_name:ключевое слово hire_date:дата hired:ключевое слово

Alejandro

McAlpine

1991-06-26T00:00:00.000Z

1991-06-26

Amabile

Gomatam

1992-11-18T00:00:00.000Z

1992-11-18

Anneke

Preusig

1989-06-02T00:00:00.000Z

1989-06-02

DATE_PARSE

Синтаксис

DATE_PARSE(datePattern,dateString)

Параметры

datePattern
Формат даты. Обратитесь к DateTimeFormatter документации для синтаксиса. Если null, функция возвращает null.
dateString
Выражение даты в виде строки. Если null или пустая строка, функция возвращает null.

Описание

Возвращает дату, анализируя второй аргумент с использованием формата, указанного в первом аргументе.

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

datePattern dateString результат

ключевое слово

ключевое слово

дата

ключевое слово

текст

дата

текст

ключевое слово

дата

текст

текст

дата

Пример

ROW date_string = "2022-05-06"
| EVAL date = DATE_PARSE("yyyy-MM-dd", date_string)
date_string:ключевое слово дата:дата

2022-05-06

2022-05-06T00:00:00.000Z

DATE_TRUNC

Синтаксис

DATE_TRUNC(интервал,дата)

Параметры

interval
Интервал; выражается с помощью синтаксиса литералов временных интервалов.
date
Выражение даты

Описание

Округляет дату вниз до ближайшего интервала.

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

интервал дата результат

период_дат

дата

дата

период_дат

дата_наносекунды

дата_наносекунды

продолжительность_времени

дата

дата

продолжительность_времени

дата_наносекунды

дата_наносекунды

Примеры

FROM employees
| KEEP first_name, last_name, hire_date
| EVAL year_hired = DATE_TRUNC(1 year, hire_date)
first_name:keyword last_name:keyword hire_date:date year_hired:date

Алехандро

МакАлпайн

1991-06-26T00:00:00.000Z

1991-01-01T00:00:00.000Z

Амабиле

Гоматам

1992-11-18T00:00:00.000Z

1992-01-01T00:00:00.000Z

Аннеке

Преузиг

1989-06-02T00:00:00.000Z

1989-01-01T00:00:00.000Z

Объедините DATE_TRUNC с STATS, чтобы создать гистограммы дат. Например, количество наёмных сотрудников в год:

FROM employees
| EVAL year = DATE_TRUNC(1 year, hire_date)
| STATS hires = COUNT(emp_no) BY year
| SORT year
hires:long year:date

11

1985-01-01T00:00:00.000Z

11

1986-01-01T00:00:00.000Z

15

1987-01-01T00:00:00.000Z

9

1988-01-01T00:00:00.000Z

13

1989-01-01T00:00:00.000Z

12

1990-01-01T00:00:00.000Z

6

1991-01-01T00:00:00.000Z

8

1992-01-01T00:00:00.000Z

3

1993-01-01T00:00:00.000Z

4

1994-01-01T00:00:00.000Z

5

1995-01-01T00:00:00.000Z

1

1996-01-01T00:00:00.000Z

1

1997-01-01T00:00:00.000Z

1

1999-01-01T00:00:00.000Z

Или часовая скорость ошибок:

FROM sample_data
| EVAL error = CASE(message LIKE "*error*", 1, 0)
| EVAL hour = DATE_TRUNC(1 hour, @timestamp)
| STATS error_rate = AVG(error) by hour
| SORT hour
error_rate:double hour:date

0.0

2023-10-23T12:00:00.000Z

0.6

2023-10-23T13:00:00.000Z

NOW

Синтаксис

NOW()

Параметры

Описание

Возвращает текущую дату и время.

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

результат

дата

Примеры

ROW current_date = NOW()
y:keyword

20

Для получения логов за последний час:

FROM sample_data
| WHERE @timestamp > NOW() - 1 hour
@timestamp:дата client_ip:IP-адрес event_duration:длина message:ключевое слово

Функции ES|QL для IP-адресов

ES|QL поддерживает следующие функции для работы с IP-адресами:

  • CIDR_MATCH
  • IP_PREFIX

CIDR_MATCH

Синтаксис

CIDR_MATCH(ip,blockX)

Параметры

ip
IP-адрес типа ip (поддерживаются IPv4 и IPv6).
blockX
CIDR-блок для проверки IP-адреса.

Описание

Возвращает true, если предоставленный IP-адрес содержится в одном из предоставленных CIDR-блоков.

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

ip blockX результат

ip

ключевое слово

булево

ip

текст

булево

Пример

FROM hosts
| WHERE CIDR_MATCH(ip1, "127.0.0.2/32", "127.0.0.3/32")
| KEEP card, host, ip0, ip1
card:ключевое слово host:ключевое слово ip0:ip ip1:ip

eth1

beta

127.0.0.1

127.0.0.2

eth0

gamma

fe80::cae2:65ff:fece:feb9

127.0.0.3

IP_PREFIX

Синтаксис

IP_PREFIX(ip,prefixLengthV4,prefixLengthV6)

Параметры

ip
IP-адрес типа ip (поддерживаются IPv4 и IPv6).
prefixLengthV4
Длина префикса для IPv4-адресов.
prefixLengthV6
Длина префикса для IPv6-адресов.

Описание

Усекает IP-адрес до заданной длины префикса.

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

ip prefixLengthV4 prefixLengthV6 результат

ip

целое число

целое число

ip

Пример

row ip4 = to_ip("1.2.3.4"), ip6 = to_ip("fe80::cae2:65ff:fece:feb9")
| eval ip4_prefix = ip_prefix(ip4, 24, 0), ip6_prefix = ip_prefix(ip6, 0, 112);
ip4:ip ip6:ip ip4_prefix:ip ip6_prefix:ip

1.2.3.4

fe80::cae2:65ff:fece:feb9

1.2.3.0

fe80::cae2:65ff:fece:0000

Математические функции ES|QL

ES|QL поддерживает следующие математические функции:

  • ABS
  • ACOS
  • ASIN
  • ATAN
  • ATAN2
  • CBRT
  • CEIL
  • COS
  • COSH
  • E
  • EXP
  • FLOOR
  • HYPOT
  • LOG
  • LOG10
  • PI
  • POW
  • ROUND
  • SIGNUM
  • SIN
  • SINH
  • SQRT
  • TAN
  • TANH
  • TAU

ABS

Синтаксис

ABS(число)

Параметры

number
Числовое выражение. Если null, функция возвращает null.

Описание

Возвращает абсолютное значение.

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

число результат

double

double

integer

integer

long

long

unsigned_long

unsigned_long

Примеры

ROW number = -1.0
| EVAL abs_number = ABS(number)
number:double abs_number:double

-1.0

1.0

FROM employees
| KEEP first_name, last_name, height
| EVAL abs_height = ABS(0.0 - height)
first_name:keyword last_name:keyword height:double abs_height:double

Алехандро

МакАлпин

1.48

1.48

Амабиле

Гоматам

2.09

2.09

Аннеке

Преузиг

1.56

1.56

ACOS

Синтаксис

ACOS(number)

Параметры

number
Число от -1 до 1. Если null, функция возвращает null.

Описание

Возвращает арккосинус n в радианах.

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

number результат

double

double

integer

double

long

double

unsigned_long

double

Пример

ROW a=.9
| EVAL acos=ACOS(a)
a:double acos:double

.9

0.45102681179626236

ASIN

Синтаксис

ASIN(number)

Параметры

number
Число от -1 до 1. Если null, функция возвращает null.

Описание

Возвращает арксинус числового выражения в радианах.

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

number результат

double

double

integer

double

long

double

unsigned_long

double

Пример

ROW a=.9
| EVAL asin=ASIN(a)
a:double asin:double

.9

1.1197695149986342

ATAN

Синтаксис

ATAN(number)

Параметры

number
Числовое выражение. Если null, функция возвращает null.

Описание

Возвращает арктангенс входного числового выражения как угол, выраженный в радианах.

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

number result

double

double

integer

double

long

double

unsigned_long

double

Пример

ROW a=12.9
| EVAL atan=ATAN(a)
a:double atan:double

12.9

1.4934316673669235

ATAN2

Синтаксис

ATAN2(y_coordinate,x_coordinate)

Параметры

y_coordinate
Координата y. Если null, функция возвращает null.
x_coordinate
Координата x. Если null, функция возвращает null.

Описание

Угол между положительной осью x и лучом из начала координат в точку (x, y) в декартовой системе координат, выраженный в радианах.

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

y_coordinate x_coordinate result

double

double

double

double

integer

double

double

long

double

double

unsigned_long

double

integer

double

double

integer

integer

double

integer

long

double

integer

unsigned_long

double

long

double

double

long

integer

double

long

long

double

long

unsigned_long

double

unsigned_long

double

double

unsigned_long

integer

double

unsigned_long

long

double

unsigned_long

unsigned_long

double

Пример

ROW y=12.9, x=.6
| EVAL atan2=ATAN2(y, x)
y:double x:double atan2:double

12.9

0.6

1.5243181954438936

CBRT

Синтаксис

CBRT(number)

Параметры

number
Числовое выражение. Если null, функция возвращает null.

Описание

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

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

number result

double

double

integer

double

long

double

unsigned_long

double

Пример

ROW d = 1000.0
| EVAL c = cbrt(d)
d: double c:double

1000.0

10.0

CEIL

Синтаксис

CEIL(number)

Параметры

number
Численное выражение. Если null, функция возвращает null.

Описание

Округляет число до ближайшего целого вверх.

Это нет действия для long (включая беззнаковые) и integer. Для double выбирается ближайшее значение double к целому числу, аналогично Math.ceil.

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

number результат

double

double

integer

integer

long

long

unsigned_long

unsigned_long

Пример

ROW a=1.8
| EVAL a=CEIL(a)
a:double

2

COS

Синтаксис

COS(angle)

Параметры

angle
Угол в радианах. Если null, функция возвращает null.

Описание

Возвращает косинус угла.

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

angle результат

double

double

integer

double

long

double

unsigned_long

double

Пример

ROW a=1.8
| EVAL cos=COS(a)
a:double cos:double

1.8

-0.2272020946930871

COSH

Синтаксис

COSH(number)

Параметры

number
Численное выражение. Если null, функция возвращает null.

Описание

Возвращает гиперболический косинус числа.

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

number результат

double

double

integer

double

long

double

unsigned_long

double

Пример

ROW a=1.8
| EVAL cosh=COSH(a)
a:double cosh:double

1.8

3.1074731763172667

E

Синтаксис

E()

Параметры

Описание

Возвращает число Эйлера.

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

результат

double

Пример

ROW E()
E():double

2.718281828459045

EXP

Синтаксис

EXP(number)

Параметры

number
Численное выражение. Если null, функция возвращает null.

Описание

Возвращает значение e, возведенное в степень заданного числа.

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

number результат

double

double

integer

double

long

double

unsigned_long

double

Пример

ROW d = 5.0
| EVAL s = EXP(d)
d: double s:double

5.0

148.413159102576603

FLOOR

Синтаксис

FLOOR(number)

Параметры

number
Числовое выражение. Если null, функция возвращает null.

Описание

Округляет число вниз до ближайшего целого.

Это пустая операция для long (включая беззнаковые) и integer. Для double выбирает ближайшее double значение к целому, аналогично Math.floor.

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

number результат

double

double

integer

integer

long

long

unsigned_long

unsigned_long

Пример

ROW a=1.8
| EVAL a=FLOOR(a)
a:double

1

HYPOT

Синтаксис

HYPOT(number1,number2)

Параметры

number1
Числовое выражение. Если null, функция возвращает null.
number2
Числовое выражение. Если null, функция возвращает null.

Описание

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

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

number1 number2 result

double

double

double

double

integer

double

double

long

double

double

unsigned_long

double

integer

double

double

integer

integer

double

integer

long

double

integer

unsigned_long

double

long

double

double

long

integer

double

long

long

double

long

unsigned_long

double

unsigned_long

double

double

unsigned_long

integer

double

unsigned_long

long

double

unsigned_long

unsigned_long

double

Пример

ROW a = 3.0, b = 4.0
| EVAL c = HYPOT(a, b)
a:double b:double c:double

3.0

4.0

5.0

LOG

Синтаксис

LOG(основание,число)

Параметры

base
Основание логарифма. Если null, функция возвращает null. Если не указано, функция возвращает натуральный логарифм (основание e) от значения.
number
Числовое выражение. Если null, функция возвращает null.

Описание

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

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

база число результат

double

double

double

double

integer

double

double

long

double

double

unsigned_long

double

double

double

integer

double

double

integer

integer

double

integer

long

double

integer

unsigned_long

double

integer

double

long

double

double

long

integer

double

long

long

double

long

unsigned_long

double

long

double

unsigned_long

double

double

unsigned_long

integer

double

unsigned_long

long

double

unsigned_long

unsigned_long

double

unsigned_long

double

Примеры

ROW base = 2.0, value = 8.0
| EVAL s = LOG(base, value)
база: double значение: double s:double

2.0

8.0

3.0

row value = 100
| EVAL s = LOG(value);
значение: integer s:double

100

4.605170185988092

LOG10

Синтаксис

LOG10(число)

Параметры

number
Числовое выражение. Если null, функция возвращает null.

Описание

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

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

number результат

double

double

integer

double

long

double

unsigned_long

double

Пример

ROW d = 1000.0
| EVAL s = LOG10(d)
d: double s:double

1000.0

3.0

PI

Синтаксис

PI()

Параметры

Описание

Возвращает значение числа π — отношение окружности к диаметру круга.

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

результат

double

Пример

ROW PI()
PI():double

3.141592653589793

POW

Синтаксис

POW(основание,степень)

Параметры

base
Числовое выражение для основания. Если null, функция возвращает null.
exponent
Числовое выражение для показателя степени. Если null, функция возвращает null.

Описание

Возвращает значение base, возведенное в степень exponent.

В данном случае всё ещё возможно переполнение результата типа double; в этом случае будет возвращено значение null.

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

основание показатель степени результат

double

double

double

double

целое число

double

double

long

double

double

unsigned_long

double

целое число

double

double

целое число

целое число

double

целое число

long

double

целое число

unsigned_long

double

long

double

double

long

целое число

double

long

long

double

long

unsigned_long

double

unsigned_long

double

double

unsigned_long

целое число

double

unsigned_long

long

double

unsigned_long

unsigned_long

double

Примеры

ROW base = 2.0, exponent = 2
| EVAL result = POW(base, exponent)
основание:double показатель степени:целое число результат:double

2.0

2

4.0

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

ROW base = 4, exponent = 0.5
| EVAL s = POW(base, exponent)
основание:целое число показатель степени:double s:double

4

0.5

2.0

ROUND

Синтаксис

ROUND(число,десятичные знаки)

Параметры

number
Числовое значение для округления. Если null, функция возвращает null.
decimals
Количество десятичных знаков для округления. По умолчанию 0. Если null, функция возвращает null.

Описание

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

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

число десятичные разряды результат

double

целое

double

double

double

целое

целое

целое

целое

целое

long

целое

long

long

long

unsigned_long

unsigned_long

Пример

FROM employees
| KEEP first_name, last_name, height
| EVAL height_ft = ROUND(height * 3.281, 1)
first_name:keyword last_name:keyword height:double height_ft:double

Arumugam

Ossenbruggen

2.1

6.9

Kwee

Schusler

2.1

6.9

Saniya

Kalloufi

2.1

6.9

SIGNUM

Синтаксис

SIGNUM(число)

Параметры

number
Численное выражение. Если null, функция возвращает null.

Описание

Возвращает знак данного числа. Возвращает -1 для отрицательных чисел, 0 для 0 и 1 для положительных чисел.

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

число результат

double

double

целое

double

long

double

unsigned_long

double

Пример

ROW d = 100.0
| EVAL s = SIGNUM(d)
d: double s:double

100

1.0

SIN

Синтаксис

SIN(угол)

Параметры

angle
Угол в радианах. Если null, функция возвращает null.

Описание

Возвращает синус угла.

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

angle результат

double

double

integer

double

long

double

unsigned_long

double

Пример

ROW a=1.8
| EVAL sin=SIN(a)
a:double sin:double

1.8

0.9738476308781951

SINH

Синтаксис

SINH(число)

Параметры

number
Числовое выражение. Если null, функция возвращает null.

Описание

Возвращает гиперболический синус числа.

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

число результат

double

double

integer

double

long

double

unsigned_long

double

Пример

ROW a=1.8
| EVAL sinh=SINH(a)
a:double sinh:double

1.8

2.94217428809568

SQRT

Синтаксис

SQRT(число)

Параметры

number
Числовое выражение. Если null, функция возвращает null.

Описание

Возвращает квадратный корень из числа. Входное значение может быть любым числовым значением, возвращаемое значение всегда равно double. Квадратные корни из отрицательных чисел и бесконечностей равны null.

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

number результат

double

double

integer

double

long

double

unsigned_long

double

Пример

ROW d = 100.0
| EVAL s = SQRT(d)
d: double s:double

100.0

10.0

TAN

Синтаксис

TAN(angle)

Параметры

angle
Угол в радианах. Если null, функция возвращает null.

Описание

Возвращает тангенс угла.

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

angle результат

double

double

integer

double

long

double

unsigned_long

double

Пример

ROW a=1.8
| EVAL tan=TAN(a)
a:double tan:double

1.8

-4.286261674628062

TANH

Синтаксис

TANH(число)

Параметры

number
Численное выражение. Если null, функция возвращает null.

Описание

Возвращает гиперболический тангенс числа.

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

число результат

double

double

integer

double

long

double

unsigned_long

double

Пример

ROW a=1.8
| EVAL tanh=TANH(a)
a:double tanh:double

1.8

0.9468060128462683

TAU

Синтаксис

TAU()

Параметры

Описание

Возвращает отношение окружности круга к его радиусу.

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

результат

double

Пример

ROW TAU()
TAU():double

6.283185307179586

ES|QL Функции полнотекстового поиска

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

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

MATCH

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

Синтаксис

MATCH(поле,запрос)

Параметры

field
Поле, на которое будет нацелен запрос.
query
Текст, который вы хотите найти в указанном поле.

Описание

Выполняет запрос соответствия по указанному полю. Возвращает значение true, если указанный запрос соответствует строке.

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

поле запрос результат

ключевое слово

ключевое слово

булево

ключевое слово

текст

булево

текст

ключевое слово

булево

текст

текст

булево

Пример

FROM books
| WHERE MATCH(author, "Faulkner")
| KEEP book_no, author
| SORT book_no
| LIMIT 5;
book_no:ключевое слово author:текст

2378

[Carol Faulkner, Holly Byers Ochoa, Lucretia Mott]

2713

William Faulkner

2847

Colleen Faulkner

2883

William Faulkner

3293

Danny Faulkner

QSTR

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

Синтаксис

QSTR(запрос)

Параметры

query
Строка запроса в формате Lucene query string.

Описание

Выполняет запрос по строке. Возвращает true, если заданная строка запроса соответствует строке.

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

запрос результат

ключевое слово

булево

текст

булево

Пример

FROM books
| WHERE QSTR("author: Faulkner")
| KEEP book_no, author
| SORT book_no
| LIMIT 5;
book_no:ключевое слово author:текст

2378

[Carol Faulkner, Holly Byers Ochoa, Lucretia Mott]

2713

William Faulkner

2847

Colleen Faulkner

2883

William Faulkner

3293

Danny Faulkner

Пространственные функции ES|QL

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

  • ST_DISTANCE
  • ST_INTERSECTS
  • ST_DISJOINT
  • ST_CONTAINS
  • ST_WITHIN
  • ST_X
  • ST_Y

ST_DISTANCE

Синтаксис

ST_DISTANCE(geomA,geomB)

Параметры

geomA
Выражение типа geo_point или cartesian_point. Если null, функция возвращает null.
geomB
Выражение типа geo_point или cartesian_point. Если null, функция возвращает null. Второй параметр также должен иметь ту же систему координат, что и первый. Это означает, что нельзя комбинировать параметры geo_point и cartesian_point.

Описание

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

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

geomA geomB результат

cartesian_point

cartesian_point

double

geo_point

geo_point

double

Пример

FROM airports
| WHERE abbrev == "CPH"
| EVAL distance = ST_DISTANCE(location, city_location)
| KEEP abbrev, name, location, city_location, distance
аббревиатура название местоположение местоположение_города расстояние

CPH

Копенгаген

POINT(12.6493508684508 55.6285017221528)

POINT(12.5683 55.6761)

7339.573896618216

ST_INTERSECTS

Синтаксис

ST_INTERSECTS(geomA,geomB)

Параметры

geomA
Выражение типа geo_point, cartesian_point, geo_shape или cartesian_shape. Если null, функция возвращает null.
geomB
Выражение типа geo_point, cartesian_point, geo_shape или cartesian_shape. Если null, функция возвращает null. Второй параметр также должен иметь ту же систему координат, что и первый. Это означает, что невозможно объединить параметры geo_* и cartesian_*.

Описание

Возвращает значение true, если две геометрии пересекаются. Они пересекаются, если имеют хотя бы одну общую точку, включая внутренние точки (точки на линиях или внутри полигонов). Это обратная функция ST_DISJOINT. В математических терминах: ST_Intersects(A, B) ⇔ A ⋂ B ≠ ∅

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

geomA geomB результат

cartesian_point

cartesian_point

boolean

cartesian_point

cartesian_shape

boolean

cartesian_shape

cartesian_point

boolean

cartesian_shape

cartesian_shape

boolean

geo_point

geo_point

boolean

geo_point

geo_shape

boolean

geo_shape

geo_point

boolean

geo_shape

geo_shape

boolean

Пример

FROM airports
| WHERE ST_INTERSECTS(location, TO_GEOSHAPE("POLYGON((42 14, 43 14, 43 15, 42 15, 42 14))"))
сокращ.:ключ город:ключ местоположение_города:geo_point страна:ключ местоположение:geo_point имя:текст ранг_масштаба:i тип:k

HOD

Аль-Худайда

POINT(42.9511 14.8022)

Йемен

POINT(42.97109630194 14.7552534413725)

Международный аэропорт Худейда

9

mid

ST_DISJOINT

Синтаксис

ST_DISJOINT(geomA,geomB)

Параметры

geomA
Выражение типа geo_point, cartesian_point, geo_shape или cartesian_shape. Если null, функция возвращает null.
geomB
Выражение типа geo_point, cartesian_point, geo_shape или cartesian_shape. Если null, функция возвращает null. Второй параметр также должен иметь ту же систему координат, что и первый. Это означает, что объединять параметры geo_* и cartesian_* нельзя.

Описание

Возвращает, являются ли две геометрии или геометрические столбцы непересекающимися. Это обратная функция ST_INTERSECTS. В математических терминах: ST_Disjoint(A, B) ⇔ A ⋂ B = ∅

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

geomA geomB результат

cartesian_point

cartesian_point

boolean

cartesian_point

cartesian_shape

boolean

cartesian_shape

cartesian_point

boolean

cartesian_shape

cartesian_shape

boolean

geo_point

geo_point

boolean

geo_point

geo_shape

boolean

geo_shape

geo_point

boolean

geo_shape

geo_shape

boolean

Пример

FROM airport_city_boundaries
| WHERE ST_DISJOINT(city_boundary, TO_GEOSHAPE("POLYGON((-10 -60, 120 -60, 120 60, -10 60, -10 -60))"))
| KEEP abbrev, airport, region, city, city_location
abbrev:keyword airport:text region:text city:keyword city_location:geo_point

ACA

General Juan N Alvarez Int’l

Acapulco de Juárez

Acapulco de Juárez

POINT (-99.8825 16.8636)

ST_CONTAINS

Синтаксис

ST_CONTAINS(geomA,geomB)

Параметры

geomA
Выражение типа geo_point, cartesian_point, geo_shape или cartesian_shape. Если null, функция возвращает null.
geomB
Выражение типа geo_point, cartesian_point, geo_shape или cartesian_shape. Если null, функция возвращает null. Второй параметр также должен иметь ту же систему координат, что и первый. Это означает, что объединять параметры geo_* и cartesian_* нельзя.

Описание

Возвращает, содержит ли первая геометрия вторую геометрию. Это обратная функция ST_WITHIN.

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

geomA geomB результат

cartesian_point

cartesian_point

boolean

cartesian_point

cartesian_shape

boolean

cartesian_shape

cartesian_point

boolean

cartesian_shape

cartesian_shape

boolean

geo_point

geo_point

boolean

geo_point

geo_shape

boolean

geo_shape

geo_point

boolean

geo_shape

geo_shape

boolean

Пример

FROM airport_city_boundaries
| WHERE ST_CONTAINS(city_boundary, TO_GEOSHAPE("POLYGON((109.35 18.3, 109.45 18.3, 109.45 18.4, 109.35 18.4, 109.35 18.3))"))
| KEEP abbrev, airport, region, city, city_location
abbrev:keyword airport:text region:text city:keyword city_location:geo_point

SYX

Sanya Phoenix Int’l

天涯区

Sanya

POINT(109.5036 18.2533)

ST_WITHIN

Синтаксис

ST_WITHIN(geomA,geomB)

Параметры

geomA
Выражение типа geo_point, cartesian_point, geo_shape или cartesian_shape. Если null, функция возвращает null.
geomB
Выражение типа geo_point, cartesian_point, geo_shape или cartesian_shape. Если null, функция возвращает null. Второй параметр также должен иметь ту же систему координат, что и первый. Это означает, что невозможно объединить параметры geo_* и cartesian_*.

Описание

Возвращает, находится ли первая геометрия внутри второй геометрии. Это обратная функция ST_CONTAINS.

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

geomA geomB результат

cartesian_point

cartesian_point

boolean

cartesian_point

cartesian_shape

boolean

cartesian_shape

cartesian_point

boolean

cartesian_shape

cartesian_shape

boolean

geo_point

geo_point

boolean

geo_point

geo_shape

boolean

geo_shape

geo_point

boolean

geo_shape

geo_shape

boolean

Пример

FROM airport_city_boundaries
| WHERE ST_WITHIN(city_boundary, TO_GEOSHAPE("POLYGON((109.1 18.15, 109.6 18.15, 109.6 18.65, 109.1 18.65, 109.1 18.15))"))
| KEEP abbrev, airport, region, city, city_location
сокращение:ключевое слово аэропорт:текст регион:текст город:ключевое слово местоположение города:geo_point

SYX

Международный аэропорт Санья Фёникс

天涯区

Санья

POINT(109.5036 18.2533)

ST_X

Синтаксис

ST_X(точка)

Параметры

point
Выражение типа geo_point или cartesian_point. Если null, функция возвращает null.

Описание

Извлекает координату x из предоставленной точки. Если точки типа geo_point, это эквивалентно извлечению значения longitude.

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

точка результат

cartesian_point

double

geo_point

double

Пример

ROW point = TO_GEOPOINT("POINT(42.97109629958868 14.7552534006536)")
| EVAL x =  ST_X(point), y = ST_Y(point)
точка:geo_point x:double y:double

POINT(42.97109629958868 14.7552534006536)

42.97109629958868

14.7552534006536

ST_Y

Синтаксис

ST_Y(точка)

Параметры

point
Выражение типа geo_point или cartesian_point. Если null, функция возвращает null.

Описание

Извлекает координату y из предоставленной точки. Если точки типа geo_point, это эквивалентно извлечению значения latitude.

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

point результат

cartesian_point

double

geo_point

double

Пример

ROW point = TO_GEOPOINT("POINT(42.97109629958868 14.7552534006536)")
| EVAL x =  ST_X(point), y = ST_Y(point)
point:geo_point x:double y:double

POINT(42.97109629958868 14.7552534006536)

42.97109629958868

14.7552534006536

Функции строк ES|QL

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

  • BIT_LENGTH
  • BYTE_LENGTH
  • CONCAT
  • ENDS_WITH
  • FROM_BASE64
  • LEFT
  • LENGTH
  • LOCATE
  • LTRIM
  • REPEAT
  • REPLACE
  • REVERSE
  • RIGHT
  • RTRIM
  • SPACE
  • SPLIT
  • STARTS_WITH
  • SUBSTRING
  • TO_BASE64
  • TO_LOWER
  • TO_UPPER
  • TRIM

BIT_LENGTH

Синтаксис

BIT_LENGTH(строка)

Параметры

string
Выражение строки. Если null, функция возвращает null.

Описание

Возвращает длину строки в битах.

Все строки находятся в кодировке UTF-8, поэтому один символ может занимать несколько байтов.

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

строка результат

ключевое слово

целое число

текст

целое число

Пример

FROM airports
| WHERE country == "India"
| KEEP city
| EVAL fn_length = LENGTH(city), fn_bit_length = BIT_LENGTH(city)
city:ключевое слово fn_length:целое число fn_bit_length:целое число

Agwār

5

48

Ahmedabad

9

72

Bangalore

9

72

BYTE_LENGTH

Синтаксис

BYTE_LENGTH(строка)

Параметры

string
Выражение строки. Если null, функция возвращает null.

Описание

Возвращает длину строки в байтах.

Все строки находятся в кодировке UTF-8, поэтому один символ может занимать несколько байт.

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

строка результат

ключевое слово

целое число

текст

целое число

Пример

FROM airports
| WHERE country == "India"
| KEEP city
| EVAL fn_length = LENGTH(city), fn_byte_length = BYTE_LENGTH(city)
city:ключевое слово fn_length:целое число fn_byte_length:целое число

Agwār

5

6

Ahmedabad

9

9

Bangalore

9

9

CONCAT

Синтаксис

CONCAT(string1,string2)

Параметры

string1
Строки для конкатенации.
string2
Строки для конкатенации.

Описание

Конкатенирует две или более строки.

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

string1 string2 результат

ключевое слово

ключевое слово

ключевое слово

ключевое слово

текст

ключевое слово

текст

ключевое слово

ключевое слово

текст

текст

ключевое слово

Пример

FROM employees
| KEEP first_name, last_name
| EVAL fullname = CONCAT(first_name, " ", last_name)
first_name:ключевое_слово last_name:ключевое_слово fullname:ключевое_слово

Alejandro

McAlpine

Alejandro McAlpine

Amabile

Gomatam

Amabile Gomatam

Anneke

Preusig

Anneke Preusig

ENDS_WITH

Синтаксис

ENDS_WITH(str,suffix)

Параметры

str
Выражение строки. Если null, функция возвращает null.
suffix
Выражение строки. Если null, функция возвращает null.

Описание

Возвращает булево значение, указывающее, заканчивается ли строка ключевого слова другой строкой.

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

str suffix результат

ключевое_слово

ключевое_слово

булево

ключевое_слово

текст

булево

текст

ключевое_слово

булево

текст

текст

булево

Пример

FROM employees
| KEEP last_name
| EVAL ln_E = ENDS_WITH(last_name, "d")
last_name:ключевое_слово ln_E:булево

Awdeh

false

Azuma

false

Baek

false

Bamford

true

Bernatsky

false

FROM_BASE64

Синтаксис

FROM_BASE64(string)

Параметры

string
Строка base64.

Описание

Декодирование строки base64.

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

string результат

ключевое_слово

ключевое_слово

текст

ключевое_слово

Пример

row a = "ZWxhc3RpYw=="
| eval d = from_base64(a)
a:keyword d:keyword

ZWxhc3RpYw==

elastic

LEFT

Синтаксис

LEFT(строка,длина)

Параметры

string
Строка, из которой нужно извлечь подстроку.
length
Количество символов для извлечения.

Описание

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

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

строка длина результат

ключевое слово

целое число

ключевое слово

текст

целое число

ключевое слово

Пример

FROM employees
| KEEP last_name
| EVAL left = LEFT(last_name, 3)
| SORT last_name ASC
| LIMIT 5
last_name:ключевое слово left:ключевое слово

Awdeh

Awd

Azuma

Azu

Baek

Bae

Bamford

Bam

Bernatsky

Ber

LENGTH

Синтаксис

LENGTH(строка)

Параметры

string
Выражение строки. Если null, функция возвращает null.

Описание

Возвращает длину строки в символах.

Все строки находятся в кодировке UTF-8, поэтому один символ может занимать несколько байт.

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

строка результат

ключевое слово

целое число

текст

целое число

Пример

FROM airports
| WHERE country == "India"
| KEEP city
| EVAL fn_length = LENGTH(city)
city:ключевое слово fn_length:целое число

Agwār

5

Ahmedabad

9

Bangalore

9

LOCATE

Синтаксис

LOCATE(строка,подстрока,начало)

Параметры

string
Входная строка
substring
Подстрока для поиска во входной строке
start
Индекс начала поиска

Описание

Возвращает целое число, указывающее позицию подстроки-ключа в другой строке. Возвращает 0, если подстрока не найдена. Обратите внимание, что позиции строк начинаются с 1.

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

строка подстрока начало результат

ключевое слово

ключевое слово

целое число

целое число

ключевое слово

ключевое слово

целое число

ключевое слово

текст

целое число

целое число

ключевое слово

текст

целое число

текст

ключевое слово

целое число

целое число

текст

ключевое слово

целое число

текст

текст

целое число

целое число

текст

текст

целое число

Пример

row a = "hello"
| eval a_ll = locate(a, "ll")
a:ключевое слово a_ll:целое число

hello

3

LTRIM

Синтаксис

LTRIM(строка)

Параметры

string
Выражение строки. Если null, функция возвращает null.

Описание

Удаляет начальные пробелы из строки.

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

строка результат

ключевое слово

ключевое слово

текст

ключевое слово

Пример

ROW message = "   some text  ",  color = " red "
| EVAL message = LTRIM(message)
| EVAL color = LTRIM(color)
| EVAL message = CONCAT("'", message, "'")
| EVAL color = CONCAT("'", color, "'")
message:ключевое слово цвет:ключевое слово

'некоторое текст '

'красный '

REPEAT

Синтаксис

REPEAT(строка,число)

Параметры

string
Строковое выражение.
number
Количество повторений.

Описание

Возвращает строку, образованную конкатенацией string с самой собой заданное number количество раз.

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

строка число результат

ключевое слово

целое число

ключевое слово

текст

целое число

ключевое слово

Пример

ROW a = "Hello!"
| EVAL triple_a = REPEAT(a, 3);
a:ключевое слово triple_a:ключевое слово

Привет!

Привет!Привет!Привет!

REPLACE

Синтаксис

REPLACE(строка,регулярное выражение,новаяСтрока)

Параметры

string
Строковое выражение.
regex
Регулярное выражение.
newString
Строка замены.

Описание

Функция заменяет в строке str все совпадения регулярного выражения regex на строку замены newStr.

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

строка регулярное выражение новая строка результат

ключевое слово

ключевое слово

ключевое слово

ключевое слово

ключевое слово

ключевое слово

текст

ключевое слово

ключевое слово

текст

ключевое слово

ключевое слово

ключевое слово

текст

текст

ключевое слово

текст

ключевое слово

ключевое слово

ключевое слово

текст

ключевое слово

текст

ключевое слово

текст

текст

ключевое слово

ключевое слово

текст

текст

текст

ключевое слово

Пример

В этом примере любое вхождение слова "World" заменяется на слово "Universe":

ROW str = "Hello World"
| EVAL str = REPLACE(str, "World", "Universe")
| KEEP str
str:ключевое слово

Привет Вселенная

REVERSE

Синтаксис

REVERSE(str)

Параметры

str
Выражение строки. Если null, функция возвращает null.

Описание

Возвращает новую строку, представляющую входную строку в обратном порядке.

Если Elasticsearch работает с версией JDK меньше 20, то это не будет правильно инвертировать кластеры графем. Elastic Cloud использует более новые версии JDK. Но если вы явно перешли к более старой версии jdk, то увидите, что такие символы, как "👍🏽😊" будут обработаны как "🏽👍😊" вместо корректного "😊👍🏽".

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

str результат

ключевое слово

ключевое слово

текст

ключевое слово

Примеры

ROW message = "Some Text" | EVAL message_reversed = REVERSE(message);
сообщение:ключевое слово сообщение_обратное:ключевое слово

Некоторая Текст

txeT emoS

REVERSE работает и с юникодом! Он сохраняет кластеры юникод-графем вместе при инвертировании.

ROW bending_arts = "💧🪨🔥💨" | EVAL bending_arts_reversed = REVERSE(bending_arts);
bending_arts:ключевое слово bending_arts_обратное:ключевое слово

💧🪨🔥💨

💨🔥🪨💧

RIGHT

Синтаксис

RIGHT(строка,длина)

Параметры

string
Строка, из которой нужно вернуть подстроку.
length
Количество символов для возврата.

Описание

Возвращает подстроку, содержащую длина символов из строка, начиная справа.

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

строка длина результат

ключевое слово

целое число

ключевое слово

текст

целое число

ключевое слово

Пример

FROM employees
| KEEP last_name
| EVAL right = RIGHT(last_name, 3)
| SORT last_name ASC
| LIMIT 5
last_name:ключевое слово right:ключевое слово

Awdeh

deh

Azuma

uma

Baek

aek

Bamford

ord

Bernatsky

sky

RTRIM

Синтаксис

RTRIM(строка)

Параметры

string
Выражение строки. Если null, функция возвращает null.

Описание

Удаляет пробелы в конце строки.

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

строка результат

ключевое слово

ключевое слово

текст

ключевое слово

Пример

ROW message = "   some text  ",  color = " red "
| EVAL message = RTRIM(message)
| EVAL color = RTRIM(color)
| EVAL message = CONCAT("'", message, "'")
| EVAL color = CONCAT("'", color, "'")
message:ключевое слово color:ключевое слово

' some text'

' red'

SPACE

Синтаксис

SPACE(число)

Параметры

number
Количество пробелов в результате.

Описание

Возвращает строку, состоящую из number пробелов.

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

число результат

целое число

ключевое слово

Пример

ROW message = CONCAT("Hello", SPACE(1), "World!");
message:ключевое слово

Привет Мир!

SPLIT

Синтаксис

SPLIT(строка,разделитель)

Параметры

string
Выражение строки. Если null, функция возвращает null.
delim
Разделитель. В настоящее время поддерживаются только разделители с одним байтом.

Описание

Разделяет строку со значением на несколько строк.

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

строка разделитель результат

ключевое слово

ключевое слово

ключевое слово

ключевое слово

текст

ключевое слово

текст

ключевое слово

ключевое слово

текст

текст

ключевое слово

Пример

ROW words="foo;bar;baz;qux;quux;corge"
| EVAL word = SPLIT(words, ";")
words:ключевое слово word:ключевое слово

foo;bar;baz;qux;quux;corge

[foo,bar,baz,qux,quux,corge]

STARTS_WITH

Синтаксис

STARTS_WITH(str,префикс)

Параметры

str
Выражение строки. Если null, функция возвращает null.
prefix
Выражение строки. Если null, функция возвращает null.

Описание

Возвращает булево значение, указывающее, начинается ли строка ключевого слова с другой строки.

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

str prefix result

ключевое слово

ключевое слово

булево

ключевое слово

текст

булево

текст

ключевое слово

булево

текст

текст

булево

Пример

FROM employees
| KEEP last_name
| EVAL ln_S = STARTS_WITH(last_name, "B")
last_name:ключевое слово ln_S:булево

Awdeh

false

Azuma

false

Baek

true

Bamford

true

Bernatsky

true

SUBSTRING

Синтаксис

SUBSTRING(строка,начало,длина)

Параметры

string
Строковое выражение. Если null, функция возвращает null.
start
Начальная позиция.
length
Длина подстроки от начальной позиции. Необязательно; если опущено, возвращаются все позиции после start.

Описание

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

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

строка начало длина результат

ключевое слово

целое число

целое число

ключевое слово

текст

целое число

целое число

ключевое слово

Примеры

В этом примере возвращаются первые три символа каждой фамилии:

FROM employees
| KEEP last_name
| EVAL ln_sub = SUBSTRING(last_name, 1, 3)
last_name:ключевое слово ln_sub:ключевое слово

Awdeh

Awd

Azuma

Azu

Baek

Bae

Bamford

Bam

Bernatsky

Ber

Отрицательная начальная позиция интерпретируется как относительная к концу строки. Этот пример возвращает последние три символа каждой фамилии:

FROM employees
| KEEP last_name
| EVAL ln_sub = SUBSTRING(last_name, -3, 3)
last_name:keyword ln_sub:keyword

Awdeh

deh

Azuma

uma

Baek

aek

Bamford

ord

Bernatsky

sky

Если длина опущена, подстрока возвращает остаток строки. Этот пример возвращает все символы, кроме первого:

FROM employees
| KEEP last_name
| EVAL ln_sub = SUBSTRING(last_name, 2)
last_name:keyword ln_sub:keyword

Awdeh

wdeh

Azuma

zuma

Baek

aek

Bamford

amford

Bernatsky

ernatsky

TO_BASE64

Синтаксис

TO_BASE64(string)

Параметры

string
Строка.

Описание

Кодирует строку в строку base64.

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

string результат

keyword

keyword

text

keyword

Пример

row a = "elastic"
| eval e = to_base64(a)
a:keyword e:keyword

elastic

ZWxhc3RpYw==

TO_LOWER

Синтаксис

TO_LOWER(str)

Параметры

str
Выражение строки. Если null, функция возвращает null.

Описание

Возвращает новую строку, представляющую строку ввода, преобразованную в нижний регистр.

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

str результат

keyword

keyword

text

keyword

Пример

ROW message = "Some Text"
| EVAL message_lower = TO_LOWER(message)
message:keyword message_lower:keyword

Текст

текст

TO_UPPER

Синтаксис

TO_UPPER(str)

Параметры

str
Строковое выражение. Если null, функция возвращает null.

Описание

Возвращает новую строку, представляющую входную строку, преобразованную в верхний регистр.

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

str результат

ключевое слово

ключевое слово

текст

ключевое слово

Пример

ROW message = "Some Text"
| EVAL message_upper = TO_UPPER(message)
message:keyword message_upper:keyword

Текст

ТЕКСТ

TRIM

Синтаксис

TRIM(string)

Параметры

string
Строковое выражение. Если null, функция возвращает null.

Описание

Удаляет начальные и конечные пробелы из строки.

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

string результат

ключевое слово

ключевое слово

текст

ключевое слово

Пример

ROW message = "   some text  ",  color = " red "
| EVAL message = TRIM(message)
| EVAL color = TRIM(color)
message:s color:s

некоторый текст

красный

Функции преобразования типов ES|QL

ES|QL поддерживает неявное приведение типов из строковых литералов к определенным типам данных. Подробности см. в разделе неявное приведение типов.

ES|QL поддерживает следующие функции преобразования типов:

  • TO_BOOLEAN
  • TO_CARTESIANPOINT
  • TO_CARTESIANSHAPE
  • [preview] Данная функциональность находится в стадии технического предварительного просмотра и может быть изменена или удалена в будущих выпусках. Elastic будет работать над устранением любых проблем, но функции в техническом предварительном просмотре не подпадают под SLA поддержки официальных функций GA. TO_DATEPERIOD
  • TO_DATETIME
  • TO_DEGREES
  • TO_DOUBLE
  • TO_GEOPOINT
  • TO_GEOSHAPE
  • TO_INTEGER
  • TO_IP
  • TO_LONG
  • TO_RADIANS
  • TO_STRING
  • [preview] Данная функциональность находится в стадии технического предварительного просмотра и может быть изменена или удалена в будущих выпусках. Elastic будет работать над устранением любых проблем, но функции в техническом предварительном просмотре не подпадают под SLA поддержки официальных функций GA. TO_TIMEDURATION
  • [preview] Данная функциональность находится в стадии технического предварительного просмотра и может быть изменена или удалена в будущих выпусках. Elastic будет работать над устранением любых проблем, но функции в техническом предварительном просмотре не подпадают под SLA поддержки официальных функций GA. TO_UNSIGNED_LONG
  • TO_VERSION

TO_BOOLEAN

Синтаксис

TO_BOOLEAN(поле)

Параметры

field
Входное значение. Вход может быть одно- или многозначным столбцом или выражением.

Описание

Преобразует входное значение в булево значение. Строковое значение true будет преобразовано в булево true без учета регистра. Для всех других значений, включая пустую строку, функция вернет false. Числовое значение 0 будет преобразовано в false, любое другое значение — в true.

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

поле результат

boolean

boolean

double

boolean

integer

boolean

keyword

boolean

long

boolean

text

boolean

unsigned_long

boolean

Пример

ROW str = ["true", "TRuE", "false", "", "yes", "1"]
| EVAL bool = TO_BOOLEAN(str)
str:keyword bool:boolean

["true", "TRuE", "false", "", "yes", "1"]

[true, true, false, false, false, false]

TO_CARTESIANPOINT

Синтаксис

TO_CARTESIANPOINT(поле)

Параметры

field
Входное значение. Вход может быть одно- или многозначным столбцом или выражением.

Описание

Преобразует входное значение в значение cartesian_point. Строка будет преобразована успешно только в том случае, если она соответствует формату WKT Point.

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

поле результат

cartesian_point

cartesian_point

keyword

cartesian_point

text

cartesian_point

Пример

ROW wkt = ["POINT(4297.11 -1475.53)", "POINT(7580.93 2272.77)"]
| MV_EXPAND wkt
| EVAL pt = TO_CARTESIANPOINT(wkt)
wkt:keyword pt:cartesian_point

"POINT(4297.11 -1475.53)"

POINT(4297.11 -1475.53)

"POINT(7580.93 2272.77)"

POINT(7580.93 2272.77)

TO_CARTESIANSHAPE

Синтаксис

TO_CARTESIANSHAPE(поле)

Параметры

field
Входное значение. Вход может быть одно- или многозначным столбцом или выражением.

Описание

Преобразует входное значение в значение cartesian_shape. Строка будет преобразована успешно только в том случае, если она соответствует формату WKT.

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

поле результат

cartesian_point

cartesian_shape

cartesian_shape

cartesian_shape

ключевое слово

cartesian_shape

текст

cartesian_shape

Пример

ROW wkt = ["POINT(4297.11 -1475.53)", "POLYGON ((3339584.72 1118889.97, 4452779.63 4865942.27, 2226389.81 4865942.27, 1113194.90 2273030.92, 3339584.72 1118889.97))"]
| MV_EXPAND wkt
| EVAL geom = TO_CARTESIANSHAPE(wkt)
wkt:ключевое слово geom:cartesian_shape

"POINT(4297.11 -1475.53)"

POINT(4297.11 -1475.53)

"POLYGON 3339584.72 1118889.97, 4452779.63 4865942.27, 2226389.81 4865942.27, 1113194.90 2273030.92, 3339584.72 1118889.97"

POLYGON 3339584.72 1118889.97, 4452779.63 4865942.27, 2226389.81 4865942.27, 1113194.90 2273030.92, 3339584.72 1118889.97

TO_DATEPERIOD

Синтаксис

TO_DATEPERIOD(поле)

Параметры

field
Входное значение. Вход — это корректное выражение константы периода даты.

Описание

Преобразует входное значение в значение date_period.

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

поле результат

date_period

date_period

ключевое слово

date_period

текст

date_period

Пример

row x = "2024-01-01"::datetime | eval y = x + "3 DAYS"::date_period, z = x - to_dateperiod("3 days");
x:datetime y:datetime z:datetime

2024-01-01

2024-01-04

2023-12-29

TO_DATETIME

Синтаксис

TO_DATETIME(поле)

Параметры

field
Входное значение. Вход может быть столбцом с одним или несколькими значениями или выражением.

Описание

Преобразует входное значение в значение даты. Строка будет преобразована только в том случае, если она соответствует формату yyyy-MM-dd'T'HH:mm:ss.SSS'Z'. Для преобразования дат в других форматах используйте DATE_PARSE.

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

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

поле результат

date

дата

date_nanos

дата

double

дата

integer

дата

keyword

дата

long

дата

text

дата

unsigned_long

дата

Примеры

ROW string = ["1953-09-02T00:00:00.000Z", "1964-06-02T00:00:00.000Z", "1964-06-02 00:00:00"]
| EVAL datetime = TO_DATETIME(string)
строка:ключевое слово дата и время:дата

["1953-09-02T00:00:00.000Z", "1964-06-02T00:00:00.000Z", "1964-06-02 00:00:00"]

[1953-09-02T00:00:00.000Z, 1964-06-02T00:00:00.000Z]

Обратите внимание, что в этом примере последнее значение в исходном многозначном поле не было преобразовано. Причина в том, что если формат даты не соблюдается, преобразование приведет к значению null. В этом случае в ответ добавляется заголовок Предупреждение. Заголовок предоставит информацию об источнике ошибки:

"Line 1:112: evaluation of [TO_DATETIME(string)] failed, treating result as null. "Only first 20 failures recorded."

Следующий заголовок будет содержать причину ошибки и нарушающее значение:

"java.lang.IllegalArgumentException: failed to parse date field [1964-06-02 00:00:00] with format [yyyy-MM-dd'T'HH:mm:ss.SSS'Z']"

Если входной параметр имеет числовой тип, его значение будет интерпретировано как миллисекунды с момента эпохи Unix. Например:

ROW int = [0, 1]
| EVAL dt = TO_DATETIME(int)
int:целое число dt:дата

[0, 1]

[1970-01-01T00:00:00.000Z, 1970-01-01T00:00:00.001Z]

TO_DEGREES

Синтаксис

TO_DEGREES(число)

Параметры

number
Входное значение. Вход может быть одиночной или многозначной колонкой или выражением.

Описание

Преобразует число в радианах в градусы.

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

число результат

double

double

целое число

double

long

double

unsigned_long

double

Пример

ROW rad = [1.57, 3.14, 4.71]
| EVAL deg = TO_DEGREES(rad)
рад:double град:double

[1.57, 3.14, 4.71]

[89.95437383553924, 179.9087476710785, 269.86312150661774]

TO_DOUBLE

Синтаксис

TO_DOUBLE(field)

Параметры

field
Входное значение. Вход может быть одно- или многозначным столбцом или выражением.

Описание

Преобразует входное значение в значение типа double. Если входной параметр имеет тип даты, его значение будет интерпретировано как миллисекунды с момента эпохи Unix, преобразованные в double. Булево значение true будет преобразовано в double 1.0, а false — в 0.0.

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

field результат

boolean

double

counter_double

double

counter_integer

double

counter_long

double

date

double

double

double

integer

double

keyword

double

long

double

text

double

unsigned_long

double

Пример

ROW str1 = "5.20128E11", str2 = "foo"
| EVAL dbl = TO_DOUBLE("520128000000"), dbl1 = TO_DOUBLE(str1), dbl2 = TO_DOUBLE(str2)
str1:keyword str2:keyword dbl:double dbl1:double dbl2:double

5.20128E11

foo

5.20128E11

5.20128E11

null

Обратите внимание, что в данном примере последнее преобразование строки невозможно. В этом случае результатом будет значение null. В таком случае в ответ добавляется заголовок Warning. Заголовок предоставит информацию о причине сбоя:

"Line 1:115: evaluation of [TO_DOUBLE(str2)] failed, treating result as null. Only first 20 failures recorded."

Следующий заголовок будет содержать причину сбоя и нарушающее значение: "java.lang.NumberFormatException: For input string: "foo""

TO_GEOPOINT

Синтаксис

TO_GEOPOINT(field)

Параметры

field
Входное значение. Вход может быть одно- или многозначным столбцом или выражением.

Описание

Преобразует входное значение в значение типа geo_point. Строка будет успешно преобразована только в том случае, если она соответствует формату WKT Point.

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

поле результат

geo_point

geo_point

ключевое слово

geo_point

текст

geo_point

Пример

ROW wkt = "POINT(42.97109630194 14.7552534413725)"
| EVAL pt = TO_GEOPOINT(wkt)
wkt:ключевое слово pt:geo_point

"POINT(42.97109630194 14.7552534413725)"

POINT(42.97109630194 14.7552534413725)

TO_GEOSHAPE

Синтаксис

TO_GEOSHAPE(поле)

Параметры

field
Входное значение. Вход может быть одно- или многозначным столбцом или выражением.

Описание

Преобразует входное значение в значение типа geo_shape. Строка будет преобразована успешно только в том случае, если она соответствует формату WKT.

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

поле результат

geo_point

geo_shape

geo_shape

geo_shape

ключевое слово

geo_shape

текст

geo_shape

Пример

ROW wkt = "POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))"
| EVAL geom = TO_GEOSHAPE(wkt)
wkt:ключевое слово geom:geo_shape

"POLYGON 30 10, 40 40, 20 40, 10 20, 30 10"

POLYGON 30 10, 40 40, 20 40, 10 20, 30 10

TO_INTEGER

Синтаксис

TO_INTEGER(поле)

Параметры

field
Входное значение. Вход может быть одно- или многозначным столбцом или выражением.

Описание

Преобразует входное значение в целое число. Если входной параметр имеет тип даты, его значение будет интерпретировано как миллисекунды с момента эпохи Unix, преобразованные в целое число. Булево true будет преобразовано в целое число 1, false в 0.

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

поле результат

boolean

целое число

counter_integer

целое число

date

целое число

double

целое число

integer

целое число

keyword

целое число

long

целое число

text

целое число

unsigned_long

целое число

Пример

ROW long = [5013792, 2147483647, 501379200000]
| EVAL int = TO_INTEGER(long)
long:long int:целое число

[5013792, 2147483647, 501379200000]

[5013792, 2147483647]

Обратите внимание, что в этом примере последнее значение многозначного поля не может быть преобразовано в целое число. В этом случае результатом является значение null. В этом случае в ответ добавляется заголовок Warning. Заголовок предоставит информацию о причине сбоя:

"Line 1:61: evaluation of [TO_INTEGER(long)] failed, treating result as null. Only first 20 failures recorded."

Следующий заголовок будет содержать причину сбоя и нарушающее значение:

"org.elasticsearch.xpack.esql.core.InvalidArgumentException: [501379200000] out of [integer] range"

TO_IP

Синтаксис

TO_IP(поле)

Параметры

field
Входное значение. Вход может быть однозначным или многозначным столбцом или выражением.

Описание

Преобразует строку ввода в значение IP.

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

поле результат

ip

ip

keyword

ip

text

ip

Пример

ROW str1 = "1.1.1.1", str2 = "foo"
| EVAL ip1 = TO_IP(str1), ip2 = TO_IP(str2)
| WHERE CIDR_MATCH(ip1, "1.0.0.0/8")
str1:keyword str2:keyword ip1:ip ip2:ip

1.1.1.1

foo

1.1.1.1

null

Обратите внимание, что в этом примере последнее преобразование строки невозможно. В этом случае результатом является значение null. В этом случае в ответ добавляется заголовок Warning. Заголовок предоставит информацию о причине сбоя:

"Line 1:68: evaluation of [TO_IP(str2)] failed, treating result as null. Only first 20 failures recorded."

Следующий заголовок будет содержать причину сбоя и нарушающее значение:

"java.lang.IllegalArgumentException: 'foo' is not an IP string literal."

TO_LONG

Синтаксис

TO_LONG(поле)

Параметры

field
Входное значение. Вход может быть одно- или многознаковым столбцом или выражением.

Описание

Преобразует входное значение в значение типа long. Если входной параметр имеет тип даты, его значение будет интерпретировано как миллисекунды с момента эпохи Unix, преобразованные в long. Логическое значение true будет преобразовано в long 1, false — в 0.

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

поле результат

boolean

long

counter_integer

long

counter_long

long

date

long

date_nanos

long

double

long

integer

long

keyword

long

long

long

text

long

unsigned_long

long

Пример

ROW str1 = "2147483648", str2 = "2147483648.2", str3 = "foo"
| EVAL long1 = TO_LONG(str1), long2 = TO_LONG(str2), long3 = TO_LONG(str3)
str1:keyword str2:keyword str3:keyword long1:long long2:long long3:long

2147483648

2147483648.2

foo

2147483648

2147483648

null

Обратите внимание, что в данном примере последнее преобразование строки невозможно. В этом случае результат — значение null. В таком случае в ответ добавляется заголовок Warning. Заголовок предоставит информацию о источнике сбоя:

"Line 1:113: evaluation of [TO_LONG(str3)] failed, treating result as null. Only first 20 failures recorded."

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

"java.lang.NumberFormatException: For input string: "foo""

TO_RADIANS

Синтаксис

TO_RADIANS(число)

Параметры

number
Входное значение. Вход может быть одно- или многознаковым столбцом или выражением.

Описание

Преобразует число в градусах в радианы.

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

число результат

double

double

integer

double

long

double

unsigned_long

double

Пример

ROW deg = [90.0, 180.0, 270.0]
| EVAL rad = TO_RADIANS(deg)
deg:double rad:double

[90.0, 180.0, 270.0]

[1.5707963267948966, 3.141592653589793, 4.71238898038469]

TO_STRING

Синтаксис

TO_STRING(поле)

Параметры

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

Описание

Преобразует входное значение в строку.

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

поле результат

boolean

ключевое слово

cartesian_point

ключевое слово

cartesian_shape

ключевое слово

date

ключевое слово

date_nanos

ключевое слово

double

ключевое слово

geo_point

ключевое слово

geo_shape

ключевое слово

integer

ключевое слово

ip

ключевое слово

keyword

ключевое слово

long

ключевое слово

text

ключевое слово

unsigned_long

ключевое слово

version

ключевое слово

Примеры

ROW a=10
| EVAL j = TO_STRING(a)
a:integer j:keyword

10

"10"

Также работает с многозначными полями:

ROW a=[10, 9, 8]
| EVAL j = TO_STRING(a)
a:integer j:keyword

[10, 9, 8]

["10", "9", "8"]

TO_TIMEDURATION

Синтаксис

TO_TIMEDURATION(поле)

Параметры

field
Входное значение. Вход является корректным выражением длительности времени.

Описание

Преобразует входное значение в значение time_duration.

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

поле результат

ключевое слово

продолжительность_времени

текст

продолжительность_времени

продолжительность_времени

продолжительность_времени

Пример

row x = "2024-01-01"::datetime | eval y = x + "3 hours"::time_duration, z = x - to_timeduration("3 hours");
x:datetime y:datetime z:datetime

2024-01-01

2024-01-01T03:00:00.000Z

2023-12-31T21:00:00.000Z

TO_UNSIGNED_LONG

Синтаксис

TO_UNSIGNED_LONG(поле)

Параметры

field
Входное значение. Вход может быть столбцом с одиночным или множественным значением или выражением.

Описание

Преобразует входное значение в целое беззнаковое число типа long. Если входной параметр имеет тип даты, его значение будет интерпретировано как миллисекунды, прошедшие с эпохи Unix, и преобразовано в целое беззнаковое число типа long. Булево значение true будет преобразовано в целое беззнаковое число типа long 1, а false - в 0.

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

поле результат

boolean

unsigned_long

дата

unsigned_long

double

unsigned_long

целое

unsigned_long

ключевое слово

unsigned_long

long

unsigned_long

текст

unsigned_long

unsigned_long

unsigned_long

Пример

ROW str1 = "2147483648", str2 = "2147483648.2", str3 = "foo"
| EVAL long1 = TO_UNSIGNED_LONG(str1), long2 = TO_ULONG(str2), long3 = TO_UL(str3)
str1:ключевое слово str2:ключевое слово str3:ключевое слово long1:unsigned_long long2:unsigned_long long3:unsigned_long

2147483648

2147483648.2

foo

2147483648

2147483648

null

Обратите внимание, что в данном примере последнее преобразование строки невозможно. В этом случае результатом является значение null. В этом случае в ответ добавляется заголовок Warning. Заголовок предоставляет информацию о источнике сбоя:

"Line 1:133: evaluation of [TO_UL(str3)] failed, treating result as null. Only first 20 failures recorded."

Следующий заголовок будет содержать причину сбоя и нарушающее значение:

"java.lang.NumberFormatException: Character f is neither a decimal digit number, decimal point, + "nor "e" notation exponential mark."

TO_VERSION

Синтаксис

TO_VERSION(field)

Параметры

field
Значение входных данных. Входные данные могут быть одно- или многозначным столбцом или выражением.

Описание

Преобразует входную строку в значение версии.

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

Поле Результат

ключевое слово

версия

текст

версия

версия

версия

Пример

ROW v = TO_VERSION("1.2.3")
v:версия

1.2.3

Функции ES|QL для многозначных значений

ES|QL поддерживает следующие функции для многозначных значений:

  • MV_APPEND
  • MV_AVG
  • MV_CONCAT
  • MV_COUNT
  • MV_DEDUPE
  • MV_FIRST
  • MV_LAST
  • MV_MAX
  • MV_MEDIAN
  • MV_MEDIAN_ABSOLUTE_DEVIATION
  • MV_MIN
  • MV_PERCENTILE
  • MV_PSERIES_WEIGHTED_SUM
  • MV_SORT
  • MV_SLICE
  • MV_SUM
  • MV_ZIP

MV_APPEND

Синтаксис

MV_APPEND(field1,field2)

Параметры

field1
field2

Описание

Объединяет значения двух полей с многозначными данными.

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

поле1 поле2 результат

boolean

boolean

boolean

cartesian_point

cartesian_point

cartesian_point

cartesian_shape

cartesian_shape

cartesian_shape

дата

дата

дата

double

double

double

geo_point

geo_point

geo_point

geo_shape

geo_shape

geo_shape

integer

integer

integer

ip

ip

ip

keyword

keyword

keyword

long

long

long

text

text

keyword

version

version

version

MV_AVG

Синтаксис

MV_AVG(number)

Параметры

number
Многозначное выражение.

Описание

Преобразует многозначное поле в однозначное поле, содержащее среднее значение всех значений.

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

число результат

double

double

integer

double

long

double

unsigned_long

double

Пример

ROW a=[3, 5, 1, 6]
| EVAL avg_a = MV_AVG(a)
a:integer avg_a:double

[3, 5, 1, 6]

3.75

MV_CONCAT

Синтаксис

MV_CONCAT(string,delim)

Параметры

string
Многозначное выражение.
delim
Разделитель.

Описание

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

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

строка разделитель результат

ключевое слово

ключевое слово

ключевое слово

ключевое слово

текст

ключевое слово

текст

ключевое слово

ключевое слово

текст

текст

ключевое слово

Примеры

ROW a=["foo", "zoo", "bar"]
| EVAL j = MV_CONCAT(a, ", ")
a:ключевое слово j:ключевое слово

["foo", "zoo", "bar"]

"foo, zoo, bar"

Для конкатенации столбцов, не являющихся строками, сначала вызовите TO_STRING:

ROW a=[10, 9, 8]
| EVAL j = MV_CONCAT(TO_STRING(a), ", ")
a:целое число j:ключевое слово

[10, 9, 8]

"10, 9, 8"

MV_COUNT

Синтаксис

MV_COUNT(поле)

Параметры

field
Многозначное выражение.

Описание

Преобразует многозначное выражение в столбец с одним значением, содержащий количество значений.

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

поле результат

логический

целое число

точка в декартовой системе координат

целое число

геометрическая фигура в декартовой системе координат

целое число

дата

целое число

дата с наносекундами

целое число

двойная точность

целое число

географическая точка

целое число

геометрическая фигура

целое число

целое число

целое число

IP-адрес

целое число

ключевое слово

целое число

длинное целое число

целое число

текст

целое число

безопасное целое число

целое число

версия

целое число

Пример

ROW a=["foo", "zoo", "bar"]
| EVAL count_a = MV_COUNT(a)
a:keyword count_a:integer

["foo", "zoo", "bar"]

3

MV_DEDUPE

Синтаксис

MV_DEDUPE(field)

Параметры

field
Многозначное выражение.

Описание

Удаляет дублирующие значения из многозначного поля.

MV_DEDUPE может, но не всегда, сортировать значения в столбце.

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

field result

boolean

boolean

cartesian_point

cartesian_point

cartesian_shape

cartesian_shape

date

date

date_nanos

date_nanos

double

double

geo_point

geo_point

geo_shape

geo_shape

integer

integer

ip

ip

keyword

keyword

long

long

text

keyword

version

version

Пример

ROW a=["foo", "foo", "bar", "foo"]
| EVAL dedupe_a = MV_DEDUPE(a)
a:keyword dedupe_a:keyword

["foo", "foo", "bar", "foo"]

["foo", "bar"]

MV_FIRST

Синтаксис

MV_FIRST(field)

Параметры

field
Многозначное выражение.

Описание

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

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

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

поле результат

boolean

boolean

cartesian_point

cartesian_point

cartesian_shape

cartesian_shape

date

date

date_nanos

date_nanos

double

double

geo_point

geo_point

geo_shape

geo_shape

integer

integer

ip

ip

keyword

keyword

long

long

text

keyword

unsigned_long

unsigned_long

version

version

Пример

ROW a="foo;bar;baz"
| EVAL first_a = MV_FIRST(SPLIT(a, ";"))
a:keyword first_a:keyword

foo;bar;baz

"foo"

MV_LAST

Синтаксис

MV_LAST(поле)

Параметры

field
Многозначное выражение.

Описание

Преобразует многозначное выражение в столбец с единственным значением, содержащим последнее значение. Это наиболее полезно при чтении из функции, которая выводит многозначные столбцы в известном порядке, например, SPLIT.

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

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

поле результат

boolean

boolean

cartesian_point

cartesian_point

cartesian_shape

cartesian_shape

date

date

date_nanos

date_nanos

double

double

geo_point

geo_point

geo_shape

geo_shape

integer

integer

ip

ip

keyword

keyword

long

long

text

keyword

unsigned_long

unsigned_long

version

version

Пример

ROW a="foo;bar;baz"
| EVAL last_a = MV_LAST(SPLIT(a, ";"))
a:keyword last_a:keyword

foo;bar;baz

"baz"

MV_MAX

Синтаксис

MV_MAX(поле)

Параметры

field
Многозначное выражение.

Описание

Преобразует многозначное выражение в однозначный столбец, содержащий максимальное значение.

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

поле результат

boolean

boolean

date

date

date_nanos

date_nanos

double

double

integer

integer

ip

ip

keyword

keyword

long

long

text

keyword

unsigned_long

unsigned_long

version

version

Примеры

ROW a=[3, 5, 1]
| EVAL max_a = MV_MAX(a)
a:integer max_a:integer

[3, 5, 1]

5

Его можно использовать с любым типом столбца, включая keyword столбцы. В этом случае он выбирает последнюю строку, сравнивая их представления в UTF-8 байт за байтом:

ROW a=["foo", "zoo", "bar"]
| EVAL max_a = MV_MAX(a)
a:ключевое слово max_a:ключевое слово

["foo", "zoo", "bar"]

"zoo"

MV_MEDIAN

Синтаксис

MV_MEDIAN(число)

Параметры

number
Многозначное выражение.

Описание

Преобразует многозначное поле в однозначное поле, содержащее медианное значение.

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

число результат

double

double

целое число

целое число

long

long

unsigned_long

unsigned_long

Примеры

ROW a=[3, 5, 1]
| EVAL median_a = MV_MEDIAN(a)
a:целое число median_a:целое число

[3, 5, 1]

3

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

ROW a=[3, 7, 1, 6]
| EVAL median_a = MV_MEDIAN(a)
a:целое число median_a:целое число

[3, 7, 1, 6]

4

MV_MEDIAN_ABSOLUTE_DEVIATION

Синтаксис

MV_MEDIAN_ABSOLUTE_DEVIATION(число)

Параметры

number
Многозначное выражение.

Описание

Преобразует многозначное поле в однозначное поле, содержащее медианное абсолютное отклонение. Оно вычисляется как медиана отклонений каждого значения данных от медианы всего образца. То есть, для случайной величины X медианное абсолютное отклонение равно median(|median(X) - X|).

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

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

число результат

double

double

целое число

целое число

long

long

unsigned_long

unsigned_long

Пример

ROW values = [0, 2, 5, 6]
| EVAL median_absolute_deviation = MV_MEDIAN_ABSOLUTE_DEVIATION(values), median = MV_MEDIAN(values)
значения:целое медианное_абсолютное_отклонение:целое медиана:целое

[0, 2, 5, 6]

2

3

MV_MIN

Синтаксис

MV_MIN(поле)

Параметры

field
Многозначное выражение.

Описание

Преобразует многозначное выражение в однозначный столбец, содержащий минимальное значение.

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

поле результат

логический

логический

дата

дата

дата_наносекунды

дата_наносекунды

двойное

двойное

целое

целое

ip

ip

ключевое_слово

ключевое_слово

длинное

длинное

текст

ключевое_слово

безусловное_длинное

безусловное_длинное

версия

версия

Примеры

ROW a=[2, 1]
| EVAL min_a = MV_MIN(a)
a:целое min_a:целое

[2, 1]

1

Его можно использовать с любым типом столбца, включая keyword столбцы. В этом случае он выбирает первую строку, сравнивая их представления в кодировке utf-8 байт за байтом:

ROW a=["foo", "bar"]
| EVAL min_a = MV_MIN(a)
a:ключевое_слово min_a:ключевое_слово

["foo", "bar"]

"bar"

MV_PERCENTILE

Синтаксис

MV_PERCENTILE(число,процентиль)

Параметры

number
Многозначное выражение.
percentile
Процентиль для вычисления. Должно быть числом от 0 до 100. Значения вне диапазона приведут к возвращению null.

Описание

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

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

число процентиль результат

double

double

double

double

integer

double

double

long

double

integer

double

integer

integer

integer

integer

integer

long

integer

long

double

long

long

integer

long

long

long

long

Пример

ROW values = [5, 5, 10, 12, 5000]
| EVAL p50 = MV_PERCENTILE(values, 50), median = MV_MEDIAN(values)
значения:integer p50:integer медиана:integer

[5, 5, 10, 12, 5000]

10

10

MV_PSERIES_WEIGHTED_SUM

Синтаксис

MV_PSERIES_WEIGHTED_SUM(число,p)

Параметры

number
Многозначное выражение.
p
Это постоянное число, представляющее параметр p в ряду P. Оно влияет на вклад каждого элемента в взвешенную сумму.

Описание

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

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

число p результат

double

double

double

Пример

ROW a = [70.0, 45.0, 21.0, 21.0, 21.0]
| EVAL sum = MV_PSERIES_WEIGHTED_SUM(a, 1.5)
| KEEP sum
сумма:double

94.45465156212452

MV_SLICE

Синтаксис

MV_SLICE(поле,начало,конец)

Параметры

field
Многозначное выражение. Если null, функция возвращает null.
start
Начальная позиция. Если null, функция возвращает null. Аргумент start может быть отрицательным. Индекс -1 используется для указания последнего значения в списке.
end
Конечная позиция (включительно). Необязательно; если опущено, возвращается позиция по start. Аргумент end может быть отрицательным. Индекс -1 используется для указания последнего значения в списке.

Описание

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

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

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

поле начало конец результат

boolean

целое число

целое число

boolean

cartesian_point

целое число

целое число

cartesian_point

cartesian_shape

целое число

целое число

cartesian_shape

дата

целое число

целое число

дата

date_nanos

целое число

целое число

date_nanos

double

целое число

целое число

double

geo_point

целое число

целое число

geo_point

geo_shape

целое число

целое число

geo_shape

целое число

целое число

целое число

целое число

ip

целое число

целое число

ip

keyword

целое число

целое число

keyword

long

целое число

целое число

long

text

целое число

целое число

keyword

версия

целое число

целое число

версия

Примеры

row a = [1, 2, 2, 3]
| eval a1 = mv_slice(a, 1), a2 = mv_slice(a, 2, 3)
a:integer a1:integer a2:integer

[1, 2, 2, 3]

2

[2, 3]

row a = [1, 2, 2, 3]
| eval a1 = mv_slice(a, -2), a2 = mv_slice(a, -3, -1)
a:integer a1:integer a2:integer

[1, 2, 2, 3]

2

[2, 2, 3]

MV_SORT

Синтаксис

MV_SORT(field,order)

Параметры

field
Многозначное выражение. Если null, функция возвращает null.
order
Порядок сортировки. Допустимые значения ASC и DESC, по умолчанию ASC.

Описание

Сортирует многозначное поле в лексикографическом порядке.

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

field order результат

boolean

keyword

boolean

date

keyword

date

date_nanos

keyword

date_nanos

double

keyword

double

integer

keyword

integer

ip

keyword

ip

keyword

keyword

keyword

long

keyword

long

text

keyword

keyword

version

keyword

version

Пример

ROW a = [4, 2, -3, 2]
| EVAL sa = mv_sort(a), sd = mv_sort(a, "DESC")
a:integer sa:integer sd:integer

[4, 2, -3, 2]

[-3, 2, 2, 4]

[4, 2, 2, -3]

MV_SUM

Синтаксис

MV_SUM(number)

Параметры

number
Многозначное выражение.

Описание

Преобразует многозначное поле в однозначное, содержащее сумму всех значений.

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

number result

double

double

integer

integer

long

long

unsigned_long

unsigned_long

Пример

ROW a=[3, 5, 6]
| EVAL sum_a = MV_SUM(a)
a:integer sum_a:integer

[3, 5, 6]

14

MV_ZIP

Синтаксис

MV_ZIP(string1,string2,delim)

Параметры

string1
Многозначное выражение.
string2
Многозначное выражение.
delim
Разделитель. Необязательный; если опущен, , используется в качестве разделителя по умолчанию.

Описание

Объединяет значения из двух многозначных полей с разделителем, соединяющим их вместе.

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

string1 string2 delim result

keyword

keyword

keyword

keyword

keyword

keyword

text

keyword

keyword

keyword

keyword

keyword

text

keyword

keyword

keyword

text

text

keyword

keyword

text

keyword

text

keyword

keyword

keyword

text

keyword

text

keyword

text

keyword

keyword

text

text

keyword

keyword

text

text

text

keyword

text

text

keyword

Пример

ROW a = ["x", "y", "z"], b = ["1", "2"]
| EVAL c = mv_zip(a, b, "-")
| KEEP a, b, c
a:keyword b:keyword c:keyword

[x, y, z]

[1 ,2]

[x-1, y-2, z]

ES|QL операторы

Булевы операторы для сравнения с одной или несколькими выражениями.

  • Двоичные операторы
  • Унарные операторы
  • Логические операторы
  • IS NULL и IS NOT NULL предикаты
  • Cast (::)
  • IN
  • LIKE
  • RLIKE
  • [preview] Данная функциональность находится в техническом предварительном просмотре и может быть изменена или удалена в будущих выпусках. Elastic будет работать над устранением любых проблем, но функции в техническом предварительном просмотре не подпадают под SLA поддержки официальных функций GA. Операторы поиска

Двоичные операторы

Равенство

lhs==rhs

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

Это передается в базовый индекс поиска, если одна сторона сравнения является константой, а другая — полем в индексе, которое имеет как index, так и doc_values.

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

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

lhs rhs результат

boolean

boolean

boolean

cartesian_point

cartesian_point

boolean

cartesian_shape

cartesian_shape

boolean

date

date

boolean

date_nanos

date_nanos

boolean

double

double

boolean

double

integer

boolean

double

long

boolean

geo_point

geo_point

boolean

geo_shape

geo_shape

boolean

integer

double

boolean

integer

integer

boolean

integer

long

boolean

ip

ip

boolean

keyword

keyword

boolean

keyword

text

boolean

long

double

boolean

long

integer

boolean

long

long

boolean

text

keyword

boolean

text

text

boolean

unsigned_long

unsigned_long

boolean

version

version

boolean

Неравенство !=

lhs!=rhs

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

Это передаётся в базовый поисковый индекс, если одна сторона сравнения является константой, а другая — полем в индексе, у которого есть как index, так и doc_values.

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

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

lhs rhs результат

boolean

boolean

boolean

cartesian_point

cartesian_point

boolean

cartesian_shape

cartesian_shape

boolean

date

date

boolean

date_nanos

date_nanos

boolean

double

double

boolean

double

integer

boolean

double

long

boolean

geo_point

geo_point

boolean

geo_shape

geo_shape

boolean

integer

double

boolean

integer

integer

boolean

integer

long

boolean

ip

ip

boolean

keyword

keyword

boolean

keyword

text

boolean

long

double

boolean

long

integer

boolean

long

long

boolean

text

keyword

boolean

text

text

boolean

unsigned_long

unsigned_long

boolean

version

version

boolean

Меньше чем <

lhs<rhs

Проверяет, является ли одно поле меньше другого. Если какое-либо поле является многозначным, то результат равен null.

Это передается в базовый поисковый индекс, если одна сторона сравнения является константой, а другая — полем в индексе, у которого есть как index, так и doc_values.

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

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

lhs rhs результат

дата

дата

булево

date_nanos

date_nanos

булево

double

double

булево

double

integer

булево

double

long

булево

integer

double

булево

integer

integer

булево

integer

long

булево

ip

ip

булево

keyword

keyword

булево

keyword

text

булево

long

double

булево

long

integer

булево

long

long

булево

text

keyword

булево

text

text

булево

unsigned_long

unsigned_long

булево

version

version

булево

Меньше или равно <=

lhs<=rhs

Проверка, является ли одно поле меньше или равно другому. Если какое-либо поле является многозначным, то результат — null.

Это передаётся в базовый поисковый индекс, если одна сторона сравнения является константой, а другая — полем в индексе, у которого есть как index, так и doc_values.

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

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

lhs rhs результат

date

date

boolean

date_nanos

date_nanos

boolean

double

double

boolean

double

integer

boolean

double

long

boolean

integer

double

boolean

integer

integer

boolean

integer

long

boolean

ip

ip

boolean

keyword

keyword

boolean

keyword

text

boolean

long

double

boolean

long

integer

boolean

long

long

boolean

text

keyword

boolean

text

text

boolean

unsigned_long

unsigned_long

boolean

version

version

boolean

Больше, чем >

lhs>rhs

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

Это передаётся в базовый индекс поиска, если одна из сторон сравнения является константой, а другая — полем в индексе, имеющим как index, так и doc_values.

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

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

lhs rhs результат

дата

дата

булево

date_nanos

date_nanos

булево

double

double

булево

double

integer

булево

double

long

булево

integer

double

булево

integer

integer

булево

integer

long

булево

ip

ip

булево

keyword

keyword

булево

keyword

text

булево

long

double

булево

long

integer

булево

long

long

булево

text

keyword

булево

text

text

булево

unsigned_long

unsigned_long

булево

version

version

булево

Больше или равно >=

lhs>=rhs

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

Это передается в базовый индекс поиска, если одна сторона сравнения является константой, а другая — полем в индексе, у которого есть как index, так и doc_values.

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

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

lhs rhs результат

дата

дата

логическое

date_nanos

date_nanos

логическое

double

double

логическое

double

integer

логическое

double

long

логическое

integer

double

логическое

integer

integer

логическое

integer

long

логическое

ip

ip

логическое

keyword

keyword

логическое

keyword

text

логическое

long

double

логическое

long

integer

логическое

long

long

логическое

text

keyword

логическое

text

text

логическое

unsigned_long

unsigned_long

логическое

version

version

логическое

Добавление +

lhs+rhs

Складывает два числа. Если хотя бы одно из полей является многозначным, то результатом является null.

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

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

lhs rhs результат

дата

период_дат

дата

дата

продолжительность_времени

дата

период_дат

дата

дата

период_дат

период_дат

период_дат

double

double

double

double

integer

double

double

long

double

integer

double

double

integer

integer

integer

integer

long

long

long

double

double

long

integer

long

long

long

long

продолжительность_времени

дата

дата

продолжительность_времени

продолжительность_времени

продолжительность_времени

unsigned_long

unsigned_long

unsigned_long

Вычитание -

lhs-rhs

Вычитание одного числа из другого. Если одно из полей является многозначным, то результат null.

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

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

lhs rhs результат

дата

период_дат

дата

дата

продолжительность_времени

дата

период_дат

период_дат

период_дат

double

double

double

double

целое

double

double

длинное

double

целое

double

double

целое

целое

целое

целое

длинное

длинное

длинное

double

double

длинное

целое

длинное

длинное

длинное

длинное

продолжительность_времени

продолжительность_времени

продолжительность_времени

безусловное_длинное

безусловное_длинное

безусловное_длинное

Умножение *

lhs*rhs

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

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

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

lhs rhs результат

double

double

double

double

integer

double

double

long

double

integer

double

double

integer

integer

integer

integer

long

long

long

double

double

long

integer

long

long

long

long

unsigned_long

unsigned_long

unsigned_long

Деление /

lhs/rhs

Делит одно число на другое. Если какое-либо поле является многозначным, то результат будет null.

Деление двух целых типов даст целочисленный результат, округляя к нулю. Если вам нужно деление с плавающей точкой, Cast (::) один из аргументов на DOUBLE.

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

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

lhs rhs результат

double

double

double

double

integer

double

double

long

double

integer

double

double

integer

integer

integer

integer

long

long

long

double

double

long

integer

long

long

long

long

unsigned_long

unsigned_long

unsigned_long

Модуль %

lhs%rhs

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

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

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

lhs rhs результат

double

double

double

double

integer

double

double

long

double

integer

double

double

integer

integer

integer

integer

long

long

long

double

double

long

integer

long

long

long

long

unsigned_long

unsigned_long

unsigned_long

Унарные операторы

Единственный унарный оператор — отрицание (-):

-v

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

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

поле результат

date_period

date_period

double

double

integer

integer

long

long

time_duration

time_duration

Логические операторы

Поддерживаются следующие логические операторы:

  • AND
  • OR
  • NOT

IS NULL и IS NOT NULL предикаты

Для сравнения NULL используйте предикаты IS NULL и IS NOT NULL:

FROM employees
| WHERE birth_date IS NULL
| KEEP first_name, last_name
| SORT first_name
| LIMIT 3
first_name:keyword last_name:keyword

Basil

Tramer

Florian

Syrotiuk

Lucien

Rosenbaum

FROM employees
| WHERE is_rehired IS NOT NULL
| STATS COUNT(emp_no)
COUNT(emp_no):long

84

Cast (::)

Оператор :: предоставляет удобный альтернативный синтаксис для функций преобразования типов TO_<type> функций преобразования типов.

ROW ver = CONCAT(("0"::INT + 1)::STRING, ".2.3")::VERSION
версия:версия

1.2.3

IN

Оператор IN позволяет проверить, равен ли поле или выражение элементу в списке литералов, полей или выражений:

ROW a = 1, b = 4, c = 3
| WHERE c-a IN (3, b / 2, a)
a:целое b:целое c:целое

1

4

3

LIKE

Используйте LIKE для фильтрации данных на основе шаблонов строк с использованием подстановочных знаков. LIKE обычно действует на поле, расположенном в левой части оператора, но также может действовать на константу (литеральное) выражение. Правая часть оператора представляет шаблон.

Поддерживаются следующие символы подстановки:

  • * соответствует нулю или более символам.
  • ? соответствует одному символу.

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

строка шаблон результат

ключевое слово

ключевое слово

логическое

текст

текст

логическое

FROM employees
| WHERE first_name LIKE """?b*"""
| KEEP first_name, last_name
имя_первой_буквы:ключевое слово фамилия:ключевое слово

Ebbe

Callaway

Eberhardt

Terkki

Сопоставление точных символов * и . потребует экранирования. Символ экранирования — обратная косая черта \. Так как обратная косая черта также является специальным символом в строковых литералах, она также потребует дополнительного экранирования.

ROW message = "foo * bar"
| WHERE message LIKE "foo \\* bar"

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

ROW message = "foo * bar"
| WHERE message LIKE """foo \* bar"""

RLIKE

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

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

str шаблон результат

ключевое слово

ключевое слово

булево

текст

текст

булево

FROM employees
| WHERE first_name RLIKE """.leja.*"""
| KEEP first_name, last_name
first_name:ключевое слово last_name:ключевое слово

Alejandro

McAlpine

Сопоставление специальных символов (например, ., *, (…) потребует экранирования. Символ экранирования — обратный слэш \. Поскольку обратный слэш также является специальным символом в строковых литералах, он также потребует дополнительного экранирования.

ROW message = "foo ( bar"
| WHERE message RLIKE "foo \\( bar"

Для уменьшения накладных расходов на экранирование рекомендуется использовать строки с тройными кавычками """

ROW message = "foo ( bar"
| WHERE message RLIKE """foo \( bar"""

Операторы поиска

Единственный оператор поиска — match (:).

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

Оператор match выполняет запрос match на указанном поле. Возвращает true, если предоставленный запрос соответствует строке.

поле:запрос

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

поле запрос результат

ключевое слово

ключевое слово

булево

ключевое слово

текст

булево

текст

ключевое слово

булево

текст

текст

булево

FROM books
| WHERE author:"Faulkner"
| KEEP book_no, author
| SORT book_no
| LIMIT 5;
book_no:ключевое слово author:текст

2378

[Carol Faulkner, Holly Byers Ochoa, Lucretia Mott]

2713

William Faulkner

2847

Colleen Faulkner

2883

William Faulkner

3293

Danny Faulkner

© 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-functions-operators.html

Spec-Zone.ru

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