EQL 関数リファレンス

Elasticsearch は次の EQL 関数 をサポートしています。

add

提供された 2 つの加算子の合計を返します。

Eql

  1. add(4, 5) // returns 9
  2. add(4, 0.5) // returns 4.5
  3. add(0.5, 0.25) // returns 0.75
  4. add(4, -2) // returns 2
  5. add(-2, -2) // returns -4
  6. // process.args_count = 4
  7. add(process.args_count, 5) // returns 9
  8. add(process.args_count, 0.5) // returns 4.5
  9. // process.parent.args_count = 2
  10. add(process.args_count, process.parent.args_count) // returns 6
  11. // null handling
  12. add(null, 4) // returns null
  13. add(4. null) // returns null
  14. add(null, process.args_count) // returns null
  15. add(process.args_count null) // returns null

構文

Txt

  1. add(<addend>, <addend>)

パラメータ:

  • <addend>
  • (必須、整数または浮動小数点数または null) 加算する加算子。もし null の場合、関数は null を返します。
    2 つの加算子が必要です。2 つ以上の加算子を提供することはできません。
    フィールドを引数として使用する場合、このパラメータは numeric フィールドデータ型のみをサポートします。

返り値: 整数、浮動小数点数、または null

between

ソース文字列内の提供された leftright テキストの間にある部分文字列を抽出します。デフォルトでは、大文字と小文字を区別して一致します。

Eql

  1. // file.path = "C:\\Windows\\System32\\cmd.exe"
  2. between(file.path, "System32\\\\", ".exe") // returns "cmd"
  3. between(file.path, "system32\\\\", ".exe") // returns ""
  4. between(file.path, "workspace\\\\", ".exe") // returns ""
  5. // Make matching case-insensitive
  6. between~(file.path, "system32\\\\", ".exe") // returns "cmd"
  7. // Greedy matching defaults to false.
  8. between(file.path, "\\\\", "\\\\", false) // returns "Windows"
  9. // Sets greedy matching to true
  10. between(file.path, "\\\\", "\\\\", true) // returns "Windows\\System32"
  11. // empty source string
  12. between("", "System32\\\\", ".exe") // returns ""
  13. between("", "", "") // returns ""
  14. // null handling
  15. between(null, "System32\\\\", ".exe") // returns null

構文

Txt

  1. between(<source>, <left>, <right>[, <greedy_matching>])

パラメータ

  • <source>
  • (必須、文字列または null) ソース文字列。空の文字列は空の文字列 ("") を返します。<left> または <right> パラメータに関係なく、空の文字列は "" を返します。もし null の場合、関数は null を返します。
    フィールドを引数として使用する場合、このパラメータは次のフィールドデータ型のみをサポートします:
  • <left>
  • (必須、文字列) 抽出する部分文字列の左側のテキスト。このテキストには空白が含まれている必要があります。
    フィールドを引数として使用する場合、このパラメータは次のフィールドデータ型のみをサポートします:
  • <right>
  • (必須、文字列) 抽出する部分文字列の右側のテキスト。このテキストには空白が含まれている必要があります。
    フィールドを引数として使用する場合、このパラメータは次のフィールドデータ型のみをサポートします:
  • <greedy_matching>
  • (オプション、Boolean) true の場合、正規表現の .* に似て、可能な限り長い部分文字列と一致します。false の場合、正規表現の .*? に似て、可能な限り短い部分文字列と一致します。デフォルトは false です。

返り値: 文字列または null

cidrMatch

IP アドレスが 1 つ以上の提供された CIDR ブロックに含まれている場合、true を返します。

Eql

  1. // source.address = "192.168.152.12"
  2. cidrMatch(source.address, "192.168.0.0/16") // returns true
  3. cidrMatch(source.address, "192.168.0.0/16", "10.0.0.0/8") // returns true
  4. cidrMatch(source.address, "10.0.0.0/8") // returns false
  5. cidrMatch(source.address, "10.0.0.0/8", "10.128.0.0/9") // returns false
  6. // null handling
  7. cidrMatch(null, "10.0.0.0/8") // returns null
  8. cidrMatch(source.address, null) // returns null

構文

Txt

パラメータ

  • <ip_address>
  • (必須、文字列または null) IP アドレス。IPv4 および IPv6 アドレスをサポートします。もし null の場合、関数は null を返します。
    フィールドを引数として使用する場合、このパラメータは ip フィールドデータ型のみをサポートします。
  • <cidr_block>
  • (必須†[1], 文字列または null) 検索したい CIDR ブロック。もし null の場合、関数は null を返します。

返り値: ブール値または null

concat

提供された値の連結された文字列を返します。

Eql

  1. concat("process is ", "regsvr32.exe") // returns "process is regsvr32.exe"
  2. concat("regsvr32.exe", " ", 42) // returns "regsvr32.exe 42"
  3. concat("regsvr32.exe", " ", 42.5) // returns "regsvr32.exe 42.5"
  4. concat("regsvr32.exe", " ", true) // returns "regsvr32.exe true"
  5. concat("regsvr32.exe") // returns "regsvr32.exe"
  6. // process.name = "regsvr32.exe"
  7. concat(process.name, " ", 42) // returns "regsvr32.exe 42"
  8. concat(process.name, " ", 42.5) // returns "regsvr32.exe 42.5"
  9. concat("process is ", process.name) // returns "process is regsvr32.exe"
  10. concat(process.name, " ", true) // returns "regsvr32.exe true"
  11. concat(process.name) // returns "regsvr32.exe"
  12. // process.arg_count = 4
  13. concat(process.name, " ", process.arg_count) // returns "regsvr32.exe 4"
  14. // null handling
  15. concat(null, "regsvr32.exe") // returns null
  16. concat(process.name, null) // returns null
  17. concat(null) // returns null

構文

Txt

  1. concat(<value>[, <value>])

パラメータ

  • <value>
  • (必須†[1]) 連結する値。引数のいずれかが null の場合、関数は null を返します。
    フィールドを引数として使用する場合、このパラメータは text フィールドデータ型をサポートしません。

返り値: 文字列または null

divide

提供された被除数と除数の商を返します。


被除数と除数の両方が整数の場合、divide 関数は返される浮動小数点数を最も近い整数に 切り捨て ます。切り捨てを避けるには、被除数または除数のいずれかを浮動小数点数に変換します。

process.args_count フィールドは long 整数フィールドで、プロセス引数のカウントを含んでいます。

ユーザーは次の EQL クエリが process.args_count 値が 4 のイベントのみを一致させることを期待するかもしれません。

Eql

  1. 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 に変換します。

Eql

  1. process where divide(4.0, process.args_count) == 1

Eql

  1. divide(4, 2) // returns 2
  2. divide(4, 3) // returns 1
  3. divide(4, 3.0) // returns 1.333...
  4. divide(4, 0.5) // returns 8
  5. divide(0.5, 4) // returns 0.125
  6. divide(0.5, 0.25) // returns 2.0
  7. divide(4, -2) // returns -2
  8. divide(-4, -2) // returns 2
  9. // process.args_count = 4
  10. divide(process.args_count, 2) // returns 2
  11. divide(process.args_count, 3) // returns 1
  12. divide(process.args_count, 3.0) // returns 1.333...
  13. divide(12, process.args_count) // returns 3
  14. divide(process.args_count, 0.5) // returns 8
  15. divide(0.5, process.args_count) // returns 0.125
  16. // process.parent.args_count = 2
  17. divide(process.args_count, process.parent.args_count) // returns 2
  18. // null handling
  19. divide(null, 4) // returns null
  20. divide(4, null) // returns null
  21. divide(null, process.args_count) // returns null
  22. divide(process.args_count, null) // returns null

構文

Txt

  1. divide(<dividend>, <divisor>)

パラメータ

  • <dividend>
  • (必須、整数または浮動小数点数または null) 除算する被除数。もし null の場合、関数は null を返します。
    フィールドを引数として使用する場合、このパラメータは numeric フィールドデータ型のみをサポートします。
  • <divisor>
  • (必須、整数または浮動小数点数または null) 除数。もし null の場合、関数は null を返します。この値はゼロであってはなりません (0)。
    フィールドを引数として使用する場合、このパラメータは numeric フィールドデータ型のみをサポートします。

返り値: 整数、浮動小数点数、または null

endsWith

ソース文字列が提供された部分文字列で終わる場合、true を返します。デフォルトでは、大文字と小文字を区別して一致します。

Eql

  1. endsWith("regsvr32.exe", ".exe") // returns true
  2. endsWith("regsvr32.exe", ".EXE") // returns false
  3. endsWith("regsvr32.exe", ".dll") // returns false
  4. endsWith("", "") // returns true
  5. // Make matching case-insensitive
  6. endsWith~("regsvr32.exe", ".EXE") // returns true
  7. // file.name = "regsvr32.exe"
  8. endsWith(file.name, ".exe") // returns true
  9. endsWith(file.name, ".dll") // returns false
  10. // file.extension = ".exe"
  11. endsWith("regsvr32.exe", file.extension) // returns true
  12. endsWith("ntdll.dll", file.name) // returns false
  13. // null handling
  14. endsWith("regsvr32.exe", null) // returns null
  15. endsWith("", null) // returns null
  16. endsWith(null, ".exe") // returns null
  17. endsWith(null, null) // returns null

構文

Txt

  1. endsWith(<source>, <substring>)

パラメータ

  • <source>
  • (必須、文字列または null) ソース文字列。もし null の場合、関数は null を返します。
    フィールドを引数として使用する場合、このパラメータは次のフィールドデータ型のみをサポートします:
  • <substring>
  • (必須、文字列または null) 検索する部分文字列。もし null の場合、関数は null を返します。
    フィールドを引数として使用する場合、このパラメータは次のフィールドデータ型のみをサポートします:

返り値: ブール値または null

indexOf

ソース文字列内の提供された部分文字列の最初の位置を返します。デフォルトでは、大文字と小文字を区別して一致します。

オプションの開始位置が提供されている場合、この関数は開始位置以降の部分文字列の最初の出現を返します。

Eql

  1. // url.domain = "subdomain.example.com"
  2. indexOf(url.domain, "d") // returns 3
  3. indexOf(url.domain, "D") // returns null
  4. indexOf(url.domain, ".") // returns 9
  5. indexOf(url.domain, ".", 9) // returns 9
  6. indexOf(url.domain, ".", 10) // returns 17
  7. indexOf(url.domain, ".", -6) // returns 9
  8. // Make matching case-insensitive
  9. indexOf~(url.domain, "D") // returns 4
  10. // empty strings
  11. indexOf("", "") // returns 0
  12. indexOf(url.domain, "") // returns 0
  13. indexOf(url.domain, "", 9) // returns 9
  14. indexOf(url.domain, "", 10) // returns 10
  15. indexOf(url.domain, "", -6) // returns 0
  16. // missing substrings
  17. indexOf(url.domain, "z") // returns null
  18. indexOf(url.domain, "z", 9) // returns null
  19. // start position is higher than string length
  20. indexOf(url.domain, ".", 30) // returns null
  21. // null handling
  22. indexOf(null, ".", 9) // returns null
  23. indexOf(url.domain, null, 9) // returns null
  24. indexOf(url.domain, ".", null) // returns null

構文

Txt

  1. indexOf(<source>, <substring>[, <start_pos>])

パラメータ

  • <source>
  • (必須、文字列または null) ソース文字列。もし null の場合、関数は null を返します。
    フィールドを引数として使用する場合、このパラメータは次のフィールドデータ型のみをサポートします:
  • <substring>
  • (必須、文字列または null) 検索する部分文字列。
    この引数が null または <source> 文字列がこの部分文字列を含まない場合、関数は null を返します。
    <start_pos> が正の場合、空の文字列 ("") は <start_pos> を返します。そうでない場合、空の文字列は 0 を返します。
    フィールドを引数として使用する場合、このパラメータは次のフィールドデータ型のみをサポートします:
  • <start_pos>
  • (オプション、整数または null) 一致のための開始位置。関数はこの位置より前の位置を返しません。デフォルトは 0 です。
    位置はゼロインデックスです。負のオフセットは 0 として扱われます。
    この引数が null 以上または <source> 文字列の長さより大きい場合、関数は null を返します。
    フィールドを引数として使用する場合、このパラメータは次の numeric フィールドデータ型のみをサポートします:
    • long
    • integer
    • short
    • byte

返り値: 整数または null

length

提供された文字列の文字数を返します。空白や句読点を含みます。

Eql

  1. length("explorer.exe") // returns 12
  2. length("start explorer.exe") // returns 18
  3. length("") // returns 0
  4. length(null) // returns null
  5. // process.name = "regsvr32.exe"
  6. length(process.name) // returns 12

構文

Txt

  1. length(<string>)

パラメータ

  • <string>
  • (必須、文字列または null) 文字数を返す文字列。もし null の場合、関数は null を返します。空の文字列は 0 を返します。
    フィールドを引数として使用する場合、このパラメータは次のフィールドデータ型のみをサポートします:

返り値: 整数または null

modulo

提供された被除数と除数の剰余を返します。

Eql

  1. modulo(10, 6) // returns 4
  2. modulo(10, 5) // returns 0
  3. modulo(10, 0.5) // returns 0
  4. modulo(10, -6) // returns 4
  5. modulo(-10, -6) // returns -4
  6. // process.args_count = 10
  7. modulo(process.args_count, 6) // returns 4
  8. modulo(process.args_count, 5) // returns 0
  9. modulo(106, process.args_count) // returns 6
  10. modulo(process.args_count, -6) // returns 4
  11. modulo(process.args_count, 0.5) // returns 0
  12. // process.parent.args_count = 6
  13. modulo(process.args_count, process.parent.args_count) // returns 4
  14. // null handling
  15. modulo(null, 5) // returns null
  16. modulo(7, null) // returns null
  17. modulo(null, process.args_count) // returns null
  18. modulo(process.args_count, null) // returns null

構文

Txt

  1. modulo(<dividend>, <divisor>)

パラメータ

  • <dividend>
  • (必須、整数または浮動小数点数または null) 除算する被除数。もし null の場合、関数は null を返します。浮動小数点数は 0 を返します。
    フィールドを引数として使用する場合、このパラメータは numeric フィールドデータ型のみをサポートします。
  • <divisor>
  • (必須、整数または浮動小数点数または null) 除数。もし null の場合、関数は null を返します。浮動小数点数は 0 を返します。この値はゼロであってはなりません (0)。
    フィールドを引数として使用する場合、このパラメータは numeric フィールドデータ型のみをサポートします。

返り値: 整数、浮動小数点数、または null

multiply

提供された 2 つの因子の積を返します。

Eql

  1. multiply(2, 2) // returns 4
  2. multiply(0.5, 2) // returns 1
  3. multiply(0.25, 2) // returns 0.5
  4. multiply(-2, 2) // returns -4
  5. multiply(-2, -2) // returns 4
  6. // process.args_count = 2
  7. multiply(process.args_count, 2) // returns 4
  8. multiply(0.5, process.args_count) // returns 1
  9. multiply(0.25, process.args_count) // returns 0.5
  10. // process.parent.args_count = 3
  11. multiply(process.args_count, process.parent.args_count) // returns 6
  12. // null handling
  13. multiply(null, 2) // returns null
  14. multiply(2, null) // returns null

構文

Txt

  1. multiply(<factor, <factor>)

パラメータ

  • <factor>
  • (必須、整数または浮動小数点数または null) 乗算する因子。もし null の場合、関数は null を返します。
    2 つの因子が必要です。2 つ以上の因子を提供することはできません。
    フィールドを引数として使用する場合、このパラメータは numeric フィールドデータ型のみをサポートします。

返り値: 整数、浮動小数点数、または null

number

文字列を対応する整数または浮動小数点数に変換します。

Eql

  1. number("1337") // returns 1337
  2. number("42.5") // returns 42.5
  3. number("deadbeef", 16) // returns 3735928559
  4. // integer literals beginning with "0x" are auto-detected as hexadecimal
  5. number("0xdeadbeef") // returns 3735928559
  6. number("0xdeadbeef", 16) // returns 3735928559
  7. // "+" and "-" are supported
  8. number("+1337") // returns 1337
  9. number("-1337") // returns -1337
  10. // surrounding whitespace is ignored
  11. number(" 1337 ") // returns 1337
  12. // process.pid = "1337"
  13. number(process.pid) // returns 1337
  14. // null handling
  15. number(null) // returns null
  16. number(null, 16) // returns null
  17. // strings beginning with "0x" are treated as hexadecimal (base 16),
  18. // even if the <base_num> is explicitly null.
  19. number("0xdeadbeef", null) // returns 3735928559
  20. // otherwise, strings are treated as decimal (base 10)
  21. // if the <base_num> is explicitly null.
  22. number("1337", null) // returns 1337

構文

Txt

  1. number(<string>[, <base_num>])

パラメータ

  • <string>
  • (必須、文字列または null) 整数または浮動小数点数に変換する文字列。この値が文字列の場合、次のいずれかである必要があります:
    • 整数の文字列表現 (例: "42")
    • 浮動小数点数の文字列表現 (例: "9.5")
    • <base_num> パラメータが指定されている場合、基数表記の整数リテラルを含む文字列 (例: "0xDECAFBAD" 16 進数または基数 16)
      0x で始まる文字列は自動的に 16 進数として検出され、デフォルトの <base_num>16 です。
      -+ はスペースなしでサポートされます。周囲の空白は無視されます。空の文字列 ("") はサポートされていません。
      フィールドを引数として使用する場合、このパラメータは次のフィールドデータ型のみをサポートします:
    • keyword ファミリーの型
    • text フィールドの keyword サブフィールド
      この引数が null の場合、関数は null を返します。
  • <base_num>
  • (オプション、整数または null) 文字列を変換するために使用される基数または基。<string>0x で始まる場合、このパラメータは 16 (16 進数) にデフォルト設定されます。そうでない場合、基数 10 にデフォルト設定されます。
    この引数が明示的に null の場合、デフォルト値が使用されます。
    フィールドは引数としてサポートされません。

返り値: 整数または浮動小数点数または null

startsWith

ソース文字列が提供された部分文字列で始まる場合、true を返します。デフォルトでは、大文字と小文字を区別して一致します。

Eql

  1. startsWith("regsvr32.exe", "regsvr32") // returns true
  2. startsWith("regsvr32.exe", "Regsvr32") // returns false
  3. startsWith("regsvr32.exe", "explorer") // returns false
  4. startsWith("", "") // returns true
  5. // Make matching case-insensitive
  6. startsWith~("regsvr32.exe", "Regsvr32") // returns true
  7. // process.name = "regsvr32.exe"
  8. startsWith(process.name, "regsvr32") // returns true
  9. startsWith(process.name, "explorer") // returns false
  10. // process.name = "regsvr32"
  11. startsWith("regsvr32.exe", process.name) // returns true
  12. startsWith("explorer.exe", process.name) // returns false
  13. // null handling
  14. startsWith("regsvr32.exe", null) // returns null
  15. startsWith("", null) // returns null
  16. startsWith(null, "regsvr32") // returns null
  17. startsWith(null, null) // returns null

構文

Txt

  1. startsWith(<source>, <substring>)

パラメータ

  • <source>
  • (必須、文字列または null) ソース文字列。もし null の場合、関数は null を返します。
    フィールドを引数として使用する場合、このパラメータは次のフィールドデータ型のみをサポートします:
  • <substring>
  • (必須、文字列または null) 検索する部分文字列。もし null の場合、関数は null を返します。
    フィールドを引数として使用する場合、このパラメータは次のフィールドデータ型のみをサポートします:

返り値: ブール値または null

string

値を文字列に変換します。

Eql

  1. string(42) // returns "42"
  2. string(42.5) // returns "42.5"
  3. string("regsvr32.exe") // returns "regsvr32.exe"
  4. string(true) // returns "true"
  5. // null handling
  6. string(null) // returns null

構文

Txt

  1. string(<value>)

パラメータ

  • <value>
  • (必須) 文字列に変換する値。もし null の場合、関数は null を返します。
    フィールドを引数として使用する場合、このパラメータは text フィールドデータ型をサポートしません。

返り値: 文字列または null

stringContains

ソース文字列が提供された部分文字列を含む場合、true を返します。デフォルトでは、大文字と小文字を区別して一致します。

Eql

  1. // process.command_line = "start regsvr32.exe"
  2. stringContains(process.command_line, "regsvr32") // returns true
  3. stringContains(process.command_line, "Regsvr32") // returns false
  4. stringContains(process.command_line, "start ") // returns true
  5. stringContains(process.command_line, "explorer") // returns false
  6. // Make matching case-insensitive
  7. stringContains~(process.command_line, "Regsvr32") // returns false
  8. // process.name = "regsvr32.exe"
  9. stringContains(command_line, process.name) // returns true
  10. // empty strings
  11. stringContains("", "") // returns false
  12. stringContains(process.command_line, "") // returns false
  13. // null handling
  14. stringContains(null, "regsvr32") // returns null
  15. stringContains(process.command_line, null) // returns null

構文

Txt

  1. stringContains(<source>, <substring>)

パラメータ

  • <source>
  • (必須、文字列または null) 検索するソース文字列。もし null の場合、関数は null を返します。

フィールドを引数として使用する場合、このパラメータは次のフィールドデータ型のみをサポートします:

  • keyword ファミリーの型
  • text フィールドの keyword サブフィールド
    • <substring>
    • (必須、文字列または null) 検索する部分文字列。もし null の場合、関数は null を返します。

フィールドを引数として使用する場合、このパラメータは次のフィールドデータ型のみをサポートします:

返り値: ブール値または null

substring

提供された開始位置と終了位置でソース文字列から部分文字列を抽出します。

終了位置が提供されていない場合、関数は残りの文字列を抽出します。

Eql

  1. substring("start regsvr32.exe", 6) // returns "regsvr32.exe"
  2. substring("start regsvr32.exe", 0, 5) // returns "start"
  3. substring("start regsvr32.exe", 6, 14) // returns "regsvr32"
  4. substring("start regsvr32.exe", -4) // returns ".exe"
  5. substring("start regsvr32.exe", -4, -1) // returns ".ex"

構文

Txt

  1. substring(<source>, <start_pos>[, <end_pos>])

パラメータ

  • <source>
  • (必須、文字列) ソース文字列。
  • <start_pos>
  • (必須、整数) 抽出の開始位置。
    この位置が <end_pos> 位置または <source> 文字列の長さよりも大きい場合、関数は空の文字列を返します。
    位置はゼロインデックスです。負のオフセットはサポートされています。
  • <end_pos>
  • (オプション、整数) 抽出のための排他的終了位置。この位置が提供されていない場合、関数は残りの文字列を返します。
    位置はゼロインデックスです。負のオフセットはサポートされています。

返り値: 文字列

subtract

提供された減数と被減数の差を返します。

Eql

  1. subtract(10, 2) // returns 8
  2. subtract(10.5, 0.5) // returns 10
  3. subtract(1, 0.2) // returns 0.8
  4. subtract(-2, 4) // returns -8
  5. subtract(-2, -4) // returns 8
  6. // process.args_count = 10
  7. subtract(process.args_count, 6) // returns 4
  8. subtract(process.args_count, 5) // returns 5
  9. subtract(15, process.args_count) // returns 5
  10. subtract(process.args_count, 0.5) // returns 9.5
  11. // process.parent.args_count = 6
  12. subtract(process.args_count, process.parent.args_count) // returns 4
  13. // null handling
  14. subtract(null, 2) // returns null
  15. subtract(2, null) // returns null

構文

Txt

  1. subtract(<minuend>, <subtrahend>)

パラメータ

  • <minuend>
  • (必須、整数または浮動小数点数または null) 減算する被減数。
    フィールドを引数として使用する場合、このパラメータは numeric フィールドデータ型のみをサポートします。
  • <subtrahend>
  • (オプション、整数または浮動小数点数または null) 減算する減数。もし null の場合、関数は null を返します。
    フィールドを引数として使用する場合、このパラメータは numeric フィールドデータ型のみをサポートします。

返り値: 整数、浮動小数点数、または null

[1] このパラメータは複数の引数を受け入れます。