変数
ユーザーガイドのこのセクションでは、数式を使用して変数を割り当てて可視化する方法について説明します。
let 式
let
式は変数を設定し、デフォルトでは最後の変数の値を返します。任意のストリーミング式または数式の出力を変数に設定できます。
以下は、3 つの変数 a
、b
、c
を設定する簡単な例です。変数 a
と b
は配列に設定されています。変数 c
は、2 つの配列の要素ごとの加算を実行する 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
関数は、変数を output の 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
}
]
}
}