純量數學
最基本的數學表達式是純量表達式。純量表達式對數字執行數學運算。
例如,下面的表達式將兩個數字相加
add(1, 1)
當此表達式傳送到 /stream
處理器時,它會回應
{
"result-set": {
"docs": [
{
"return-value": 2
},
{
"EOF": true,
"RESPONSE_TIME": 2
}
]
}
}
數學表達式可以巢狀。例如,在下面的表達式中,add
函數的輸出是 pow
函數的第二個參數
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
欄位。第二個參數是純量值 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
}
]
}
}