泰坦多ID查询
Titan multiple ID query
通过一组 id 查询 Titan 以获取一组顶点的最佳方法是什么?
假设我有一些 UUID 为 属性 的节点,我想通过一组 ID 获取这些顶点 - 最好的查询方法是什么?
我可以遍历 id 集合并通过这个 API 逐个顶点获取所需的顶点(在此示例中,userId 是我在 id 集合上循环的对象):
for(String userId: usersList) {
tg.getVertices("UUID", userId).iterator();
}
或者这个:
for(String userId: usersList) {
tg.query().has("UUID", userId).vercities().iterator();
}
但我找不到一种方法可以给 Titan 列表并在一次通话中接通,
在 Java 中执行此操作的最佳方法是什么?
编辑
换句话说,我正在寻找 SQL IN
运算符的等效方法 - 但在 titan 语法中:
SELECT *
FROM Users
WHERE City IN ('fe4e2e2c-8638-4081-b6de-e10252e638e7', 'fess2c-8638-4rgf-b6de-e102sdf3447');
你要找的是com.tinkerpop.blueprints.Contains
谓词:
tg.query().has("UUID", Contains.IN, usersLists).verticies().iterator();
如果您使用的是 Titan 1.0(即 TinkerPop 3.x),您可以使用 Gremlin 更直接地执行此操作:
gremlin> g.V().has('name', within('marko','josh'))
==>v[1]
==>v[4]
最好将其添加到索引中,然后检索它,因为通过迭代器搜索图形效率不高,如果您认为要在该字段上进行搜索,最好将其添加到索引中。
对唯一字段也使用复合 titan 索引,因为它要快得多。
另一种方法是对图进行分区,以便您知道在哪里搜索它,然后使用迭代器。
通过一组 id 查询 Titan 以获取一组顶点的最佳方法是什么?
假设我有一些 UUID 为 属性 的节点,我想通过一组 ID 获取这些顶点 - 最好的查询方法是什么?
我可以遍历 id 集合并通过这个 API 逐个顶点获取所需的顶点(在此示例中,userId 是我在 id 集合上循环的对象):
for(String userId: usersList) {
tg.getVertices("UUID", userId).iterator();
}
或者这个:
for(String userId: usersList) {
tg.query().has("UUID", userId).vercities().iterator();
}
但我找不到一种方法可以给 Titan 列表并在一次通话中接通, 在 Java 中执行此操作的最佳方法是什么?
编辑
换句话说,我正在寻找 SQL IN
运算符的等效方法 - 但在 titan 语法中:
SELECT *
FROM Users
WHERE City IN ('fe4e2e2c-8638-4081-b6de-e10252e638e7', 'fess2c-8638-4rgf-b6de-e102sdf3447');
你要找的是com.tinkerpop.blueprints.Contains
谓词:
tg.query().has("UUID", Contains.IN, usersLists).verticies().iterator();
如果您使用的是 Titan 1.0(即 TinkerPop 3.x),您可以使用 Gremlin 更直接地执行此操作:
gremlin> g.V().has('name', within('marko','josh'))
==>v[1]
==>v[4]
最好将其添加到索引中,然后检索它,因为通过迭代器搜索图形效率不高,如果您认为要在该字段上进行搜索,最好将其添加到索引中。
对唯一字段也使用复合 titan 索引,因为它要快得多。
另一种方法是对图进行分区,以便您知道在哪里搜索它,然后使用迭代器。