Scalar Math
The most basic math expressions are scalar expressions. Scalar expressions perform mathematical operations on numbers.
For example the expression below adds two numbers together:
add(1, 1)
When this expression is sent to the /stream handler it
responds with:
{
"result-set": {
"docs": [
{
"return-value": 2
},
{
"EOF": true,
"RESPONSE_TIME": 2
}
]
}
}
Math expressions can be nested. For example in the expression
below the output of the add function is the second parameter
of the pow function:
pow(10, add(1,1))
This expression returns the following response:
{
"result-set": {
"docs": [
{
"return-value": 100
},
{
"EOF": true,
"RESPONSE_TIME": 0
}
]
}
}
Streaming Scalar Math
Scalar math expressions can also be applied to each tuple in a stream
through use of the select stream decorator. The select function wraps a
stream of tuples and selects fields to include in each tuple.
The select function can also use math expressions to compute
new values and add them to the outgoing tuples.
In the example below the select expression is wrapping a search
expression. The select function is selecting the price_f field
and computing a new field called newPrice using the mult math
expression.
The first parameter of the mult expression is the price_f field.
The second parameter is the scalar value 10. This multiplies the value
of the price_f field in each tuple by 10.
select(search(collection2, q="*:*", fl="price_f", sort="price_f desc", rows="3"),
price_f,
mult(price_f, 10) as newPrice)
When this expression is sent to the /stream handler it responds with:
{
"result-set": {
"docs": [
{
"price_f": 0.99999994,
"newPrice": 9.9999994
},
{
"price_f": 0.99999994,
"newPrice": 9.9999994
},
{
"price_f": 0.9999992,
"newPrice": 9.999992
},
{
"EOF": true,
"RESPONSE_TIME": 3
}
]
}
}
More Scalar Math Functions
The following scalar math functions are available in the math expressions library:
abs, add, div, mult, sub, log, log10,
pow, mod, ceil, floor, sin, asin,
sinh, cos, acos, cosh, tan, atan,
tanh, round, precision, recip, sqrt, cbrt