问题描述
我有一个包含两个不相交字段的索引。由于我无法使用联合查询获取这两个字段(Elasticsearch 尚不支持联合查询),因此我尝试使用 Vega-Lite 的查找转换发送单独的查询来检索第二个不相交的字段。
[{"a": "10","b": "x"},{"a": "20","b": "y"},{"a": "25","b": "z"} ....
.... {"a": "21","c": "l"},{"a": "22","c": "m"},{"a": "40","c": "n"}]
我想从 20 到 25 获取 a 的 b 和 c 的值 在这种情况下的答案是 b = ["y","z"],c = ["l","m"]
我的 vega-lite json 配置如下所示:
{
"data": {
"url": {
"index": "index-name","query": "" // Query to fetch all values of b
},"transform": [{
"lookup": "",// What to put here?
"from": {
"data": {
"url": {
"index": "index-name","query": "" // Query to fetch all values of c
}
},"key": "",// What to put here?
"fields": [] // and here?
}
}],"mark": ...,"encoding": {
...
}
}
基本上我正在寻找的是首先获得 b 的值,然后选择 a 的范围 并在 a 的这个范围内再次查询 c。
有可能吗? 因为我在 Vega-lite 中经常遇到错误。
解决方法
您可以在 vega-lite 编辑器中尝试以下操作。您将需要 2 个数据集,1 个是 c_data,另一个是 b_data。转换查找类似于左联接,因此联接仅适用于具有公共值的“a”字段。
onCompleted
告诉我这是否适合您。