Справочник по функциям EQL
Elasticsearch поддерживает следующие функции EQL.
add
Возвращает сумму двух заданных слагаемых.
Пример
add(4, 5) // returns 9 add(4, 0.5) // returns 4.5 add(0.5, 0.25) // returns 0.75 add(4, -2) // returns 2 add(-2, -2) // returns -4 // process.args_count = 4 add(process.args_count, 5) // returns 9 add(process.args_count, 0.5) // returns 4.5 // process.parent.args_count = 2 add(process.args_count, process.parent.args_count) // returns 6 // null handling add(null, 4) // returns null add(4. null) // returns null add(null, process.args_count) // returns null add(process.args_count null) // returns null
Синтаксис
add(<addend>, <addend>)
Параметры:
-
<addend> -
(Обязательно, целое или вещественное число или
null) Слагаемое для сложения. Еслиnull, функция возвращаетnull.Требуются два слагаемых. Нельзя указать более двух слагаемых.
Если в качестве аргумента используется поле, этот параметр поддерживает только типы данных полей
numeric.
Возвращает: целое, вещественное число или null
between
Извлекает подстроку, расположенную между заданным left и right текстом в исходной строке. По умолчанию сопоставление регистрозависимое.
Пример
// file.path = "C:\\Windows\\System32\\cmd.exe"
between(file.path, "System32\\\\", ".exe") // returns "cmd"
between(file.path, "system32\\\\", ".exe") // returns ""
between(file.path, "workspace\\\\", ".exe") // returns ""
// Make matching case-insensitive
between~(file.path, "system32\\\\", ".exe") // returns "cmd"
// Greedy matching defaults to false.
between(file.path, "\\\\", "\\\\", false) // returns "Windows"
// Sets greedy matching to true
between(file.path, "\\\\", "\\\\", true) // returns "Windows\\System32"
// empty source string
between("", "System32\\\\", ".exe") // returns ""
between("", "", "") // returns ""
// null handling
between(null, "System32\\\\", ".exe") // returns null Синтаксис
between(<source>, <left>, <right>[, <greedy_matching>])
Параметры
-
<source> -
(Обязательно, строка или
null) Исходная строка. Пустые строки возвращают пустую строку (""), независимо от параметров<left>или<right>. Еслиnull, функция возвращаетnull.Если в качестве аргумента используется поле, этот параметр поддерживает только следующие типы данных полей:
-
<left> -
(Обязательно, строка) Текст слева от подстроки для извлечения. Этот текст должен включать пробелы.
Если в качестве аргумента используется поле, этот параметр поддерживает только следующие типы данных полей:
-
<right> -
(Обязательно, строка) Текст справа от подстроки для извлечения. Этот текст должен включать пробелы.
Если в качестве аргумента используется поле, этот параметр поддерживает только следующие типы данных полей:
-
<greedy_matching> - (Необязательно, булево) Если
true, найдите самую длинную возможную подстроку, аналогично.*в регулярных выражениях. Еслиfalse, найдите самую короткую возможную подстроку, аналогично.*?в регулярных выражениях. По умолчаниюfalse.
Возвращает: строка или null
cidrMatch
Возвращает true, если IP-адрес содержится в одном или нескольких предоставленных блоках CIDR.
Пример
// source.address = "192.168.152.12" cidrMatch(source.address, "192.168.0.0/16") // returns true cidrMatch(source.address, "192.168.0.0/16", "10.0.0.0/8") // returns true cidrMatch(source.address, "10.0.0.0/8") // returns false cidrMatch(source.address, "10.0.0.0/8", "10.128.0.0/9") // returns false // null handling cidrMatch(null, "10.0.0.0/8") // returns null cidrMatch(source.address, null) // returns null
Синтаксис
`cidrMatch(<ip_address>, <cidr_block>[, ...])`
Параметры
-
<ip_address> -
(Обязательно, строка или
null) IP-адрес. Поддерживает адреса IPv4 и IPv6. Еслиnull, функция возвращаетnull.Если в качестве аргумента используется поле, этот параметр поддерживает только тип данных поля
ip. -
<cidr_block> - (Обязательно†[1], строка или
null) Блок CIDR, который вы хотите найти. Еслиnull, функция возвращаетnull.
Возвращает: булево значение или null
concat
Возвращает склеенную строку из предоставленных значений.
Пример
concat("process is ", "regsvr32.exe") // returns "process is regsvr32.exe"
concat("regsvr32.exe", " ", 42) // returns "regsvr32.exe 42"
concat("regsvr32.exe", " ", 42.5) // returns "regsvr32.exe 42.5"
concat("regsvr32.exe", " ", true) // returns "regsvr32.exe true"
concat("regsvr32.exe") // returns "regsvr32.exe"
// process.name = "regsvr32.exe"
concat(process.name, " ", 42) // returns "regsvr32.exe 42"
concat(process.name, " ", 42.5) // returns "regsvr32.exe 42.5"
concat("process is ", process.name) // returns "process is regsvr32.exe"
concat(process.name, " ", true) // returns "regsvr32.exe true"
concat(process.name) // returns "regsvr32.exe"
// process.arg_count = 4
concat(process.name, " ", process.arg_count) // returns "regsvr32.exe 4"
// null handling
concat(null, "regsvr32.exe") // returns null
concat(process.name, null) // returns null
concat(null) // returns null Синтаксис
concat(<value>[, <value>])
Параметры
Возвращает: строка или null
divide
Возвращает частное от деления заданного делимого на делитель.
Если и делимое, и делитель являются целыми числами, функция divide округляет вниз любые возвращаемые числа с плавающей запятой до ближайшего целого числа. Чтобы избежать округления, преобразуйте делимое или делитель в число с плавающей запятой.
Пример
Поле process.args_count является целочисленным полем long, содержащим количество аргументов процесса.
Пользователь, возможно, ожидает, что следующий запрос EQL будет соответствовать только событиям со значением process.args_count равным 4.
process where divide(4, process.args_count) == 1
Однако запрос EQL соответствует событиям со значением process.args_count равным 3 или 4.
Для событий со значением process.args_count равным 3, функция divide возвращает число с плавающей запятой 1.333..., которое округляется вниз до 1.
Чтобы соответствовать только событиям со значением process.args_count равным 4, преобразуйте либо делимое, либо делитель в число с плавающей запятой.
Следующий запрос EQL изменяет целое число 4 на эквивалентное число с плавающей запятой 4.0.
process where divide(4.0, process.args_count) == 1
Пример
divide(4, 2) // returns 2 divide(4, 3) // returns 1 divide(4, 3.0) // returns 1.333... divide(4, 0.5) // returns 8 divide(0.5, 4) // returns 0.125 divide(0.5, 0.25) // returns 2.0 divide(4, -2) // returns -2 divide(-4, -2) // returns 2 // process.args_count = 4 divide(process.args_count, 2) // returns 2 divide(process.args_count, 3) // returns 1 divide(process.args_count, 3.0) // returns 1.333... divide(12, process.args_count) // returns 3 divide(process.args_count, 0.5) // returns 8 divide(0.5, process.args_count) // returns 0.125 // process.parent.args_count = 2 divide(process.args_count, process.parent.args_count) // returns 2 // null handling divide(null, 4) // returns null divide(4, null) // returns null divide(null, process.args_count) // returns null divide(process.args_count, null) // returns null
Синтаксис
divide(<dividend>, <divisor>)
Параметры
-
<dividend> -
(Обязательно, целое или вещественное число или
null) Делимое. Еслиnull, функция возвращаетnull.Если в качестве аргумента используется поле, этот параметр поддерживает только типы данных полей
numeric. -
<divisor> -
(Обязательно, целое или вещественное число или
null) Делитель. Еслиnull, функция возвращаетnull. Это значение не может быть нулём (0).Если в качестве аргумента используется поле, этот параметр поддерживает только типы данных полей
numeric.
Возвращает: целое, вещественное число или null
endsWith
Возвращает true, если исходная строка заканчивается заданной подстрокой. По умолчанию сопоставление регистрозависимое.
Пример
endsWith("regsvr32.exe", ".exe") // returns true
endsWith("regsvr32.exe", ".EXE") // returns false
endsWith("regsvr32.exe", ".dll") // returns false
endsWith("", "") // returns true
// Make matching case-insensitive
endsWith~("regsvr32.exe", ".EXE") // returns true
// file.name = "regsvr32.exe"
endsWith(file.name, ".exe") // returns true
endsWith(file.name, ".dll") // returns false
// file.extension = ".exe"
endsWith("regsvr32.exe", file.extension) // returns true
endsWith("ntdll.dll", file.name) // returns false
// null handling
endsWith("regsvr32.exe", null) // returns null
endsWith("", null) // returns null
endsWith(null, ".exe") // returns null
endsWith(null, null) // returns null Синтаксис
endsWith(<source>, <substring>)
Параметры
-
<source> -
(Required, string or
null) Исходная строка. Еслиnull, функция возвращаетnull.Если в качестве аргумента используется поле, этот параметр поддерживает только следующие типы данных полей:
-
<substring> -
(Required, string or
null) Подстрока для поиска. Еслиnull, функция возвращаетnull.Если в качестве аргумента используется поле, этот параметр поддерживает только следующие типы данных полей:
Возвращает: boolean или null
indexOf
Возвращает первую позицию заданной подстроки в исходной строке. По умолчанию сопоставление регистрозависимое.
Если указана необязательная начальная позиция, эта функция возвращает первое вхождение подстроки в или после начальной позиции.
Пример
// url.domain = "subdomain.example.com"
indexOf(url.domain, "d") // returns 3
indexOf(url.domain, "D") // returns null
indexOf(url.domain, ".") // returns 9
indexOf(url.domain, ".", 9) // returns 9
indexOf(url.domain, ".", 10) // returns 17
indexOf(url.domain, ".", -6) // returns 9
// Make matching case-insensitive
indexOf~(url.domain, "D") // returns 4
// empty strings
indexOf("", "") // returns 0
indexOf(url.domain, "") // returns 0
indexOf(url.domain, "", 9) // returns 9
indexOf(url.domain, "", 10) // returns 10
indexOf(url.domain, "", -6) // returns 0
// missing substrings
indexOf(url.domain, "z") // returns null
indexOf(url.domain, "z", 9) // returns null
// start position is higher than string length
indexOf(url.domain, ".", 30) // returns null
// null handling
indexOf(null, ".", 9) // returns null
indexOf(url.domain, null, 9) // returns null
indexOf(url.domain, ".", null) // returns null Синтаксис
indexOf(<source>, <substring>[, <start_pos>])
Параметры
-
<source> -
(Required, string or
null) Исходная строка. Еслиnull, функция возвращаетnull.Если в качестве аргумента используется поле, этот параметр поддерживает только следующие типы данных полей:
-
<substring> -
(Required, string or
null) Подстрока для поиска.Если этот аргумент
nullили строка<source>не содержит эту подстроку, функция возвращаетnull.Если
<start_pos>положительно, пустые строки ("") возвращают<start_pos>. В противном случае пустые строки возвращают0.Если в качестве аргумента используется поле, этот параметр поддерживает только следующие типы данных полей:
-
<start_pos> -
(Optional, integer or
null) Начальная позиция для сопоставления. Функция не будет возвращать позиции до этой. По умолчанию0.Позиции нумеруются с нуля. Отрицательные смещения обрабатываются как
0.Если этот аргумент
nullили больше длины строки<source>, функция возвращаетnull.Если в качестве аргумента используется поле, этот параметр поддерживает только следующие числовые типы данных полей:
-
long -
integer -
short -
byte
-
Возвращает: целое число или null
length
Возвращает длину в символах заданной строки, включая пробелы и знаки препинания.
Пример
length("explorer.exe") // returns 12
length("start explorer.exe") // returns 18
length("") // returns 0
length(null) // returns null
// process.name = "regsvr32.exe"
length(process.name) // returns 12 Синтаксис
length(<string>)
Параметры
-
<string> -
(Required, string or
null) Строка, для которой необходимо вернуть длину в символах. Еслиnull, функция возвращаетnull. Пустые строки возвращают0.Если в качестве аргумента используется поле, этот параметр поддерживает только следующие типы данных полей:
Возвращает: целое число или null
modulo
Возвращает остаток от деления задаваемого делимого на делитель.
Пример
modulo(10, 6) // returns 4 modulo(10, 5) // returns 0 modulo(10, 0.5) // returns 0 modulo(10, -6) // returns 4 modulo(-10, -6) // returns -4 // process.args_count = 10 modulo(process.args_count, 6) // returns 4 modulo(process.args_count, 5) // returns 0 modulo(106, process.args_count) // returns 6 modulo(process.args_count, -6) // returns 4 modulo(process.args_count, 0.5) // returns 0 // process.parent.args_count = 6 modulo(process.args_count, process.parent.args_count) // returns 4 // null handling modulo(null, 5) // returns null modulo(7, null) // returns null modulo(null, process.args_count) // returns null modulo(process.args_count, null) // returns null
Синтаксис
modulo(<dividend>, <divisor>)
Параметры
-
<dividend> -
(Required, integer or float or
null) Делимое. Еслиnull, функция возвращаетnull. Числа с плавающей точкой возвращают0.Если в качестве аргумента используется поле, этот параметр поддерживает только типы данных полей
numeric. -
<divisor> -
(Required, integer or float or
null) Делитель. Еслиnull, функция возвращаетnull. Числа с плавающей точкой возвращают0. Это значение не может быть нулём (0).Если в качестве аргумента используется поле, этот параметр поддерживает только типы данных полей
numeric.
Возвращает: целое число, число с плавающей точкой или null
multiply
Возвращает произведение двух заданных множителей.
Пример
multiply(2, 2) // returns 4 multiply(0.5, 2) // returns 1 multiply(0.25, 2) // returns 0.5 multiply(-2, 2) // returns -4 multiply(-2, -2) // returns 4 // process.args_count = 2 multiply(process.args_count, 2) // returns 4 multiply(0.5, process.args_count) // returns 1 multiply(0.25, process.args_count) // returns 0.5 // process.parent.args_count = 3 multiply(process.args_count, process.parent.args_count) // returns 6 // null handling multiply(null, 2) // returns null multiply(2, null) // returns null
Синтаксис
multiply(<factor, <factor>)
Параметры
-
<factor> -
(Required, integer or float or
null) Множитель. Еслиnull, функция возвращаетnull.Требуются два множителя. Не более двух множителей могут быть предоставлены.
Если в качестве аргумента используется поле, этот параметр поддерживает только типы данных полей
numeric.
Возвращает: целое число, число с плавающей точкой или null
number
Преобразует строку в соответствующее целое число или число с плавающей точкой.
Пример
number("1337") // returns 1337
number("42.5") // returns 42.5
number("deadbeef", 16) // returns 3735928559
// integer literals beginning with "0x" are auto-detected as hexadecimal
number("0xdeadbeef") // returns 3735928559
number("0xdeadbeef", 16) // returns 3735928559
// "+" and "-" are supported
number("+1337") // returns 1337
number("-1337") // returns -1337
// surrounding whitespace is ignored
number(" 1337 ") // returns 1337
// process.pid = "1337"
number(process.pid) // returns 1337
// null handling
number(null) // returns null
number(null, 16) // returns null
// strings beginning with "0x" are treated as hexadecimal (base 16),
// even if the <base_num> is explicitly null.
number("0xdeadbeef", null) // returns 3735928559
// otherwise, strings are treated as decimal (base 10)
// if the <base_num> is explicitly null.
number("1337", null) // returns 1337 Синтаксис
number(<string>[, <base_num>])
Параметры
-
<string> -
(Обязательный, строка или
null) Строка, которую нужно преобразовать в целое или вещественное число. Если это значение является строкой, оно должно быть одним из следующих:- Строковое представление целого числа (например,
"42") - Строковое представление вещественного числа (например,
"9.5") - Если указан параметр
<base_num>, строка, содержащая целую литерал в обозначении по основанию (например,"0xDECAFBAD"в шестнадцатеричной системе или в16системе счисления)
Строки, начинающиеся с
0x, автоматически распознаются как шестнадцатеричные и используют по умолчанию<base_num>значение16.-и+поддерживаются без пробелов. Окружающие пробелы игнорируются. Пустые строки ("") не поддерживаются.Если в качестве аргумента используется поле, этот параметр поддерживает только следующие типы данных полей:
Если этот аргумент является
null, функция возвращаетnull. - Строковое представление целого числа (например,
-
<base_num> -
(Необязательный, целое число или
null) Основание системы счисления для преобразования строки. Если строка<string>начинается с0x, этот параметр по умолчанию равен16(шестнадцатеричное). В противном случае, по умолчанию используется основание10.Если этот аргумент явно
null, используется значение по умолчанию.Поля не поддерживаются как аргументы.
Возвращает: целое или вещественное число или null
startsWith
Возвращает true, если исходная строка начинается с указанной подстроки. Сопоставление по умолчанию чувствительно к регистру.
Пример
startsWith("regsvr32.exe", "regsvr32") // returns true
startsWith("regsvr32.exe", "Regsvr32") // returns false
startsWith("regsvr32.exe", "explorer") // returns false
startsWith("", "") // returns true
// Make matching case-insensitive
startsWith~("regsvr32.exe", "Regsvr32") // returns true
// process.name = "regsvr32.exe"
startsWith(process.name, "regsvr32") // returns true
startsWith(process.name, "explorer") // returns false
// process.name = "regsvr32"
startsWith("regsvr32.exe", process.name) // returns true
startsWith("explorer.exe", process.name) // returns false
// null handling
startsWith("regsvr32.exe", null) // returns null
startsWith("", null) // returns null
startsWith(null, "regsvr32") // returns null
startsWith(null, null) // returns null Синтаксис
startsWith(<source>, <substring>)
Параметры
-
<source> -
(Обязательный, строка или
null) Исходная строка. Еслиnull, функция возвращаетnull.Если в качестве аргумента используется поле, этот параметр поддерживает только следующие типы данных полей:
-
<substring> -
(Обязательный, строка или
null) Подстрока для поиска. Еслиnull, функция возвращаетnull.Если в качестве аргумента используется поле, этот параметр поддерживает только следующие типы данных полей:
Возвращает: логическое значение или null
string
Преобразует значение в строку.
Пример
string(42) // returns "42"
string(42.5) // returns "42.5"
string("regsvr32.exe") // returns "regsvr32.exe"
string(true) // returns "true"
// null handling
string(null) // returns null Синтаксис
string(<value>)
Параметры
-
<value> -
(Обязательный) Значение, которое нужно преобразовать в строку. Если
null, функция возвращаетnull.Если в качестве аргумента используется поле, этот параметр не поддерживает тип данных поля
text.
Возвращает: строка или null
stringContains
Возвращает true, если исходная строка содержит указанную подстроку. Сопоставление по умолчанию чувствительно к регистру.
Пример
// process.command_line = "start regsvr32.exe"
stringContains(process.command_line, "regsvr32") // returns true
stringContains(process.command_line, "Regsvr32") // returns false
stringContains(process.command_line, "start ") // returns true
stringContains(process.command_line, "explorer") // returns false
// Make matching case-insensitive
stringContains~(process.command_line, "Regsvr32") // returns false
// process.name = "regsvr32.exe"
stringContains(command_line, process.name) // returns true
// empty strings
stringContains("", "") // returns false
stringContains(process.command_line, "") // returns false
// null handling
stringContains(null, "regsvr32") // returns null
stringContains(process.command_line, null) // returns null Синтаксис
stringContains(<source>, <substring>)
Параметры
-
<source> - (Обязательный, строка или
null) Исходная строка для поиска. Еслиnull, функция возвращаетnull.
Если в качестве аргумента используется поле, этот параметр поддерживает только следующие типы данных полей:
Если в качестве аргумента используется поле, этот параметр поддерживает только следующие типы данных полей:
Возвращает: логическое значение или null
substring
Извлекает подстроку из исходной строки по заданным начальным и конечным позициям.
Если конечная позиция не указана, функция извлекает оставшуюся часть строки.
Пример
substring("start regsvr32.exe", 6) // returns "regsvr32.exe"
substring("start regsvr32.exe", 0, 5) // returns "start"
substring("start regsvr32.exe", 6, 14) // returns "regsvr32"
substring("start regsvr32.exe", -4) // returns ".exe"
substring("start regsvr32.exe", -4, -1) // returns ".ex" Синтаксис
substring(<source>, <start_pos>[, <end_pos>])
Параметры
-
<source> - (Обязательный, строка) Исходная строка.
-
<start_pos> -
(Обязательный, целое число) Начальная позиция для извлечения.
Если эта позиция выше позиции
<end_pos>или длины строки<source>, функция возвращает пустую строку.Позиции нумеруются с нуля. Поддерживаются отрицательные смещения.
-
<end_pos> -
(Необязательный, целое число) Исключительная конечная позиция для извлечения. Если эта позиция не указана, функция возвращает оставшуюся часть строки.
Позиции нумеруются с нуля. Поддерживаются отрицательные смещения.
Возвращает: строка
subtract
Возвращает разницу между заданным уменьшаемым и вычитаемым.
Пример
subtract(10, 2) // returns 8 subtract(10.5, 0.5) // returns 10 subtract(1, 0.2) // returns 0.8 subtract(-2, 4) // returns -8 subtract(-2, -4) // returns 8 // process.args_count = 10 subtract(process.args_count, 6) // returns 4 subtract(process.args_count, 5) // returns 5 subtract(15, process.args_count) // returns 5 subtract(process.args_count, 0.5) // returns 9.5 // process.parent.args_count = 6 subtract(process.args_count, process.parent.args_count) // returns 4 // null handling subtract(null, 2) // returns null subtract(2, null) // returns null
Синтаксис
subtract(<minuend>, <subtrahend>)
Параметры
-
<minuend> -
(Обязательный, целое или вещественное число или
null) Уменьшаемое.Если в качестве аргумента используется поле, этот параметр поддерживает только типы данных полей
numeric. -
<subtrahend> -
(Необязательный, целое или вещественное число или
null) Вычитаемое. Еслиnull, функция возвращаетnull.Если в качестве аргумента используется поле, этот параметр поддерживает только типы данных полей
numeric.
Возвращает: целое, вещественное число или null
© 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/eql-function-ref.html