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