變數
使用者指南的這一節說明如何使用數學運算式指派和視覺化變數。
Let 運算式
let
運算式會設定變數,並預設傳回最後一個變數的值。任何串流運算式或數學運算式的輸出都可以設定為變數。
以下是一個簡單的範例,設定三個變數 a
、b
和 c
。變數 a
和 b
設定為陣列。變數 c
設定為 ebeAdd
函式的輸出,該函式會執行兩個陣列的逐元素相加。
let(a=array(1, 2, 3),
b=array(10, 20, 30),
c=ebeAdd(a, b))
在回應中,請注意會傳回最後一個變數 c
{
"result-set": {
"docs": [
{
"c": [
11,
22,
33
]
},
{
"EOF": true,
"RESPONSE_TIME": 4
}
]
}
}
回顯變數
可以透過將 echo
變數設定為 true
來輸出所有變數。
let(echo=true,
a=array(1, 2, 3),
b=array(10, 20, 30),
c=ebeAdd(a, b))
當此運算式傳送至 /stream
處理器時,它會回應:
{
"result-set": {
"docs": [
{
"a": [
1,
2,
3
],
"b": [
10,
20,
30
],
"c": [
11,
22,
33
]
},
{
"EOF": true,
"RESPONSE_TIME": 0
}
]
}
}
可以透過提供以逗號分隔的變數清單至 echo
參數來回顯特定的一組變數。因為已提供變數,所以會假設值為 true
。
let(echo="a,b",
a=array(1, 2, 3),
b=array(10, 20, 30),
c=ebeAdd(a, b))
當此運算式傳送至 /stream
處理器時,它會回應:
{
"result-set": {
"docs": [
{
"a": [
1,
2,
3
],
"b": [
10,
20,
30
]
},
{
"EOF": true,
"RESPONSE_TIME": 0
}
]
}
}
視覺化變數
let
運算式也可以包含 zplot
運算式,可用於視覺化變數。
在以下範例中,變數 a
和 b
設定為陣列。zplot
函式會將變數輸出為輸出中的 x
和 y
欄位。
let(a=array(1, 2, 3),
b=array(10, 20, 30),
zplot(x=a, y=b))
當此運算式傳送至 /stream
處理器時,它會回應:
{
"result-set": {
"docs": [
{
"x": 1,
"y": 10
},
{
"x": 2,
"y": 20
},
{
"x": 3,
"y": 30
},
{
"EOF": true,
"RESPONSE_TIME": 0
}
]
}
}
使用這種方法,可以使用 Zeppelin-Solr 來視覺化變數。在以下範例中,陣列以表格格式顯示。

一旦轉換為表格格式,我們可以使用其中一種繪圖或圖表視覺化方式來繪製變數。以下範例顯示繪製在折線圖上的變數

快取變數
變數可以在執行數學運算式的 Solr 節點上的記憶體中快取。然後,快取的變數可以用於未來的運算式。任何可以設定為變數的物件,包括資料結構和數學模型,都可以在記憶體中快取以供未來使用。
putCache
函式會將變數新增至快取。
在以下範例中,陣列會快取在工作區 workspace1
中,並繫結至金鑰 key1
。工作區允許不同的使用者在其自己的工作區中快取物件。putCache
函式會傳回已新增至快取的變數。
let(a=array(1, 2, 3),
b=array(10, 20, 30),
c=ebeAdd(a, b),
d=putCache(workspace1, key1, c))
當此運算式傳送至 /stream
處理器時,它會回應:
{
"result-set": {
"docs": [
{
"d": [
11,
22,
33
]
},
{
"EOF": true,
"RESPONSE_TIME": 11
}
]
}
}
getCache
函式會透過其工作區和金鑰,從快取中擷取物件。
在以下範例中,getCache
函式會擷取上面快取的陣列,並將其指派給變數 a
。
let(a=getCache(workspace1, key1))
當此運算式傳送至 /stream
處理器時,它會回應:
{
"result-set": {
"docs": [
{
"a": [
11,
22,
33
]
},
{
"EOF": true,
"RESPONSE_TIME": 11
}
]
}
}
listCache
函式可用於列出工作區或特定工作區中的金鑰。
在以下範例中,listCache
會以字串陣列的形式傳回快取中的所有工作區。
let(a=listCache())
當此運算式傳送至 /stream
處理器時,它會回應:
{
"result-set": {
"docs": [
{
"a": [
"workspace1"
]
},
{
"EOF": true,
"RESPONSE_TIME": 0
}
]
}
}
在以下範例中,會列出特定工作區中的所有金鑰
let(a=listCache(workspace1))
當此運算式傳送至 /stream
處理器時,它會回應:
{
"result-set": {
"docs": [
{
"a": [
"key1"
]
},
{
"EOF": true,
"RESPONSE_TIME": 0
}
]
}
}
removeCache
函式可用於從特定工作區中移除金鑰。removeCache
函式會從快取中移除金鑰,並傳回已移除的物件。
在以下範例中,上面快取的陣列會從快取中移除。
let(a=removeCache(workspace1, key1))
當此運算式傳送至 /stream
處理器時,它會回應:
{
"result-set": {
"docs": [
{
"a": [
11,
22,
33
]
},
{
"EOF": true,
"RESPONSE_TIME": 0
}
]
}
}