我目前正在尝试使用this示例的vega在Kibana中创建一个节点图。为了进行测试,我使用了node-data
和link-data
而不是data/miserables.json
的硬编码示例数据集。
节点数据值:
[
{ "name": "node1" },
{ "name": "node2" }
]
链接数据值:
[
{ "source": 0, "target": 1, "link-info": "connection" }
]
source
的target
和link-data
属性期望相应node-data
条目的索引,因此,目前我绘制了两个节点,它们之间在node1和node2之间进行了硬编码连接(到目前为止工作正常)。但是,现在我想使用来自Elasticsearch查询的数据而不是硬编码的数据集。
目前,我可以以以下格式查询elasticsearch表
flex 数据值:
[
{ "src_node": "node1", "dst_node": "node2", "link_info": "connection" }
]
现在我不知道如何从中创建
link-data
。我可能可以通过Elasticsearch查询提取唯一的源和目标来创建node-data
,但是如何获取它们的索引来创建匹配的link-data
?我发现了this
indexof()
函数,我以为可以在expr
中使用它来转换src_node
和dst_node
,但无法正常工作,也找不到使用示例。但是,也许我错过了另一个选择,例如,也许有一种方法可以使用
node.name
代替source
和target
的索引?我整理了一个minimum working example(Vega在线编辑器)-请参见第69行以获取简短描述
最佳答案
万一有人偶然发现:我确实错过了这个“另一个选择”。
只需将"id": "datum.name"
附加到{"force": "link", "links": "link-data", "distance": 100}
所以看起来{"force": "link", "id": "datum.name", "links": "link-data", "distance": 100}
。
这允许基于名称的引用而不是索引。现在,数据集name
中的link-data
字段将用于识别node-data
中的项目。 Documentation Reference
关于elasticsearch - 如何从Elasticsearch数据中为Vega中的路径创建索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60587982/