如何从 elasticsearch 数据为 vega 中的路径创建索引?

How to create indices from elasticsearch data for paths in vega?

我目前正尝试按照 this 示例使用 vega 在 Kibana 中创建节点图。为了进行测试,我使用了 node-datalink-data 的硬编码示例数据集,而不是 data/miserables.json .

节点数据值:

[
   { "name": "node1" },
   { "name": "node2" }
]

link-数据值:

[
   { "source": 0, "target": 1, "link-info": "connection" }
]

link-datasourcetarget 属性 期望相应 node-data 条目的索引,所以目前我用硬编码绘制了两个节点node1node2 之间的连接(到目前为止工作正常)。

但是,现在我想使用来自 elasticsearch 查询的数据而不是硬编码数据集。

目前我可以使用以下格式在 elasticsearch 中查询 table

弹性数据值:

[
   { "src_node": "node1", "dst_node": "node2", "link_info": "connection" }
]

现在我不知道如何从中创建 link-data。我可能可以使用 elasticsearch 查询提取唯一的来源和目的地来创建 node-data 但我怎样才能得到他们的索引来创建匹配的 link-data?

我找到了 this indexof() 函数,我认为我可以在 expr 中使用它来转换 src_nodedst_node 但无法得到它无法正常工作,也找不到使用示例。

但也许我错过了另一个选择,比如也许有一种方法可以使用 node.name 而不是 sourcetarget 的索引?


我整理了一个 minimum working example(Vega 在线编辑器)- 见第 69 行的简短描述

万一有人无意中发现这个:原来我确实错过了这个 "another option"。

这就像将 "id": "datum.name" 附加到

一样简单

{"force": "link", "links": "link-data", "distance": 100}

看起来像

{"force": "link", "id": "datum.name", "links": "link-data", "distance": 100}.

这允许基于名称的引用而不是索引。现在,数据集 link-data 中的字段 name 将用于识别 node-data 中的项目。 Documentation Reference