Справочник по функциям 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"в шестнадцатеричном или base16)
Строки, начинающиеся с
0x, автоматически распознаются как шестнадцатеричные и используют по умолчанию<base_num>в значении16.-и+поддерживаются без пробела. Окружающие пробелы игнорируются. Пустые строки ("") не поддерживаются.Если в качестве аргумента используется поле, этот параметр поддерживает только следующие типы данных полей:
Если этот аргумент равен
null, функция возвращаетnull. - Строковое представление целого числа (например,
-
<base_num> -
(Необязательно, целое число или
null) Основание, используемое для преобразования строки. Если строка<string>начинается с0x, этот параметр по умолчанию равен16(шестнадцатеричный). В противном случае он по умолчанию равен base10.Если этот аргумент явным образом
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
wildcard
Возвращает true, если исходная строка соответствует одному или нескольким указанным выражениям с подстановкой. По умолчанию сопоставление регистрозависимое.
Пример
// The * wildcard matches zero or more characters.
// process.name = "regsvr32.exe"
wildcard(process.name, "*regsvr32*") // returns true
wildcard(process.name, "*Regsvr32*") // returns false
wildcard(process.name, "*regsvr32*", "*explorer*") // returns true
wildcard(process.name, "*explorer*") // returns false
wildcard(process.name, "*explorer*", "*scrobj*") // returns false
// Make matching case-insensitive
wildcard~(process.name, "*Regsvr32*") // returns true
// The ? wildcard matches exactly one character.
// process.name = "regsvr32.exe"
wildcard(process.name, "regsvr32.e?e") // returns true
wildcard(process.name, "regsvr32.e?e", "e?plorer.exe") // returns true
wildcard(process.name, "regsvr32.exe?") // returns false
wildcard(process.name, "e?plorer.exe") // returns false
wildcard(process.name, "e?plorer.exe", "scrob?.dll") // returns false
// empty strings
wildcard("", "*start*") // returns false
wildcard("", "*") // returns true
wildcard("", "?") // returns false
wildcard("", "") // returns true
// null handling
wildcard(null, "*regsvr32*") // returns null
wildcard(process.name, null) // returns null Синтаксис
wildcard(<source>, <wildcard_exp>[, ...])
Параметры
-
<source> -
(Обязательный, строка) Исходная строка. Если
null, функция возвращаетnull.При использовании поля в качестве аргумента, этот параметр поддерживает только следующие типы данных поля:
-
<wildcard_exp> -
(Обязательный†[1], строка) Выражение с подстановкой, используемое для сопоставления исходной строки. Подстановка
*соответствует нулю или более символам. Подстановка?соответствует ровно одному символу.Если
null, функция возвращаетnull. Поля не поддерживаются в качестве аргументов.
Возвращаемое значение: boolean
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/eql-function-ref.html