变量
本用户指南部分介绍如何使用数学表达式分配和可视化变量。
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
}
]
}
}