Spec-Zone.ru › Elasticsearch 8
›Руководство по Elasticsearch [8.17] ›Поиск EQL

Справочник по функциям 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.

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

  • Тип из семейства keyword
  • text поле с подполем keyword
<left>

(Обязательно, строка) Текст слева от подстроки для извлечения. Этот текст должен включать пробелы.

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

  • Тип из семейства keyword
  • text поле с подполем keyword
<right>

(Обязательно, строка) Текст справа от подстроки для извлечения. Этот текст должен включать пробелы.

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

  • Тип из семейства keyword
  • text поле с подполем keyword
<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>])

Параметры

<value>

(Обязательно†[1]) Значение для конкатенации. Если какой-либо из аргументов null, функция возвращает null.

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

Возвращает: строка или 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.

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

  • Тип из семейства keyword
  • Поле text с подполем keyword
<substring>

(Required, string or null) Подстрока для поиска. Если null, функция возвращает null.

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

  • Тип из семейства keyword
  • Поле text с подполем keyword

Возвращает: 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.

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

  • Тип из семейства keyword
  • Поле text с подполем keyword
<substring>

(Required, string or null) Подстрока для поиска.

Если этот аргумент null или строка <source> не содержит эту подстроку, функция возвращает null.

Если <start_pos> положительно, пустые строки ("") возвращают <start_pos>. В противном случае пустые строки возвращают 0.

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

  • Тип из семейства keyword
  • Поле text с подполем keyword
<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.

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

  • Тип из семейства keyword
  • Поле text с подполем keyword

Возвращает: целое число или 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.

- и + поддерживаются без пробелов. Окружающие пробелы игнорируются. Пустые строки ("") не поддерживаются.

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

  • Тип из семейства keyword
  • Поле text с подполем keyword

Если этот аргумент является 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.

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

  • Тип из семейства keyword
  • Поле text с подполем keyword
<substring>

(Обязательный, строка или null) Подстрока для поиска. Если null, функция возвращает null.

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

  • Тип из семейства keyword
  • Поле text с подполем keyword

Возвращает: логическое значение или 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.

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

  • Тип из семейства keyword
  • text поле с подполем keyword

    <substring>
    (Обязательный, строка или null) Подстрока для поиска. Если null, функция возвращает null.

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

  • Тип из семейства keyword
  • text поле с подполем keyword

Возвращает: логическое значение или 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

[1] Этот параметр принимает несколько аргументов.

© 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

Spec-Zone.ru

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