スカラー数学
最も基本的な数式はスカラー式です。スカラー式は、数値に対して数学演算を実行します。
たとえば、以下の式は2つの数値を加算します
add(1, 1)
この式を/stream
ハンドラに送信すると、以下のレスポンスが返されます
{
"result-set": {
"docs": [
{
"return-value": 2
},
{
"EOF": true,
"RESPONSE_TIME": 2
}
]
}
}
数式はネストすることができます。たとえば、以下の式では、`add`関数の出力は`pow`関数の2番目のパラメータになります
pow(10, add(1,1))
この式は、以下のレスポンスを返します
{
"result-set": {
"docs": [
{
"return-value": 100
},
{
"EOF": true,
"RESPONSE_TIME": 0
}
]
}
}
ストリーミングスカラー数学
スカラー数式は、`select`ストリームデコレータを使用することで、ストリーム内の各タプルにも適用できます。 `select`関数は、タプルのストリームをラップし、各タプルに含めるフィールドを選択します。 `select`関数は、数式を使用して新しい値を計算し、発信タプルに追加することもできます。
以下の例では、`select`式が検索式をラップしています。 `select`関数は、`response_d`フィールドを選択し、`mult`数式を使用して`new_response`という新しいフィールドを計算しています。
`mult`式の最初のパラメータは`response_d`フィールドです。 2番目のパラメータはスカラー値10です。これは、各タプルの`response_d`フィールドの値に10を掛けます。
select(search(testapp, q="*:*", fl="response_d", sort="response_d desc", rows="3"),
response_d,
mult(response_d, 10) as new_response)
この式を/stream
ハンドラに送信すると、以下のレスポンスが返されます
{
"result-set": {
"docs": [
{
"response_d": 1080.3692514541938,
"new_response": 10803.692514541937
},
{
"response_d": 1067.441598608506,
"new_response": 10674.41598608506
},
{
"response_d": 1059.8400090891566,
"new_response": 10598.400090891566
},
{
"EOF": true,
"RESPONSE_TIME": 12
}
]
}
}