Eval Functions
Basic Field Expressions
Field expressions can use arithmetic operators to compute values:
| eval myfield=field1 + field2
| eval myfield=field1 - field2
| eval myfield=field1 * field2
| eval myfield=field1 / field2
Conditional Expressions
if
The if function evaluates a condition and returns one of two values:
| eval myfield=if(condition, trueValue, falseValue)
Example:
| eval myfield=if(field1 > 100, "high", "low")
isnull
Checks if a field is null or undefined:
| eval myfield=isnull(field1)
Conversion Functions
to_string
Converts a value to string type:
| eval myfield=to_string(field1)
to_number
Converts a value to numeric type:
| eval myfield=to_number(field1)
to_boolean
Converts a value to boolean type:
| eval myfield=to_boolean(field1)
to_array
Converts a value to array type:
| eval myfield=to_array(field1)
to_json
Converts a parseable string value to JSON type:
| eval myfield=to_json(field1)
convert
Converts data between different formats. Supports conversion to CEF and LEEF formats.
CEF Conversion
Converts the entire event to CEF format. If the following fields exist in the event, they are automatically added to the CEF header:
- deviceVendor
- deviceProduct
- deviceVersion
- deviceEventClassId
- name
- severity
| eval deviceVendor="Some Vendor", deviceProduct="Some Product" ... | eval cefOutput = convert(cef)
| eval cefOutput = convert(cef, exclude=[password, rawPayload])
LEEF Conversion
Converts the entire event to LEEF format. If the following fields exist in the event, they are automatically added to the LEEF header:
- leefVersion
- deviceVendor
- deviceProduct
- deviceVersion
- deviceEventClassId
| eval leefOutput = convert(leef)
| eval leefOutput = convert(leef, include=[user, srcIp, dstIp, action])
Notes:
- For CEF and LEEF conversions, you can specify which fields to include or exclude
- The default delimiter character for LEEF is
^
- The conversion assumes the entire event and assigns its converted value to the specified field
- Field names in the examples use camelCase for better readability
String Manipulation Functions
lower
Converts a string to lowercase:
| eval myfield=lower(field1)
upper
Converts a string to uppercase:
| eval myfield=upper(field1)
Nested Expressions
Functions can be nested within each other. For example:
| eval myfield=to_string(isnull(field1))
| eval myfield=lower(to_string(field1))
| eval myfield=if(isnull(field1), "missing", to_string(field1))
Examples
Basic Arithmetic
| eval result=field1 + field2
Input:
{
"field1": 10,
"field2": 20
}
Result:
{
"field1": 10,
"field2": 20,
"result": 30
}
Conditional with Type Conversion
| eval result=if(isnull(field1), "missing", to_string(field1))
Input:
{
"field1": 42
}
Result:
{
"field1": 42,
"result": "42"
}
String Manipulation
| eval result=upper(to_string(field1))
Input:
{
"field1": 42
}
Result:
{
"field1": 42,
"result": "42"
}
Usage Notes
- All functions can be nested within each other
- The if function can use isnull or to_boolean as its condition
- Type conversion functions will return null if the conversion is not possible
- String manipulation functions will return the original value if the input is not a string
- Multiple field assignments can be combined using commas