小编bcm*_*360的帖子

通过Gremlin在大图中的节点/边数?

通过Gremlin计算大图中节点/边数的最简单,最有效的方法是什么?我发现最好的是使用V迭代器:

gremlin> g.V.gather{it.size()}
Run Code Online (Sandbox Code Playgroud)

但是,根据V文档,这对于大型图表来说不是一个可行的选择:

图的顶点迭代器.利用它来迭代图中的所有顶点.除非与键索引查找结合使用,否则请小心使用大型图形.

gremlin

8
推荐指数
1
解决办法
5762
查看次数

在Gremlin中的现有节点之间添加边

我是Gremlin的新手,只是试图建立一个基本图表.我已经能够在新顶点上做一个基本的addEdge,即

gremlin> v1 = g.addVertex()
==>v[200004]
gremlin> v2 = g.addVertex()
==>v[200008]
gremlin> e = g.addEdge(v1, v2, 'edge label')
==>e[4c9f-Q1S-2F0LaTPQN8][200004-edge label->200008]
Run Code Online (Sandbox Code Playgroud)

我也能够通过id查找顶点之间的边缘:

gremlin> v1 = g.v(200004)
==>v[200004]
gremlin> v2 = g.v(200008)
==>v[200008]
gremlin> e = g.addEdge(v1, v2, 'edge label')
==>e[4c9f-Q1S-2F0LaTPQN8][200004-edge label->200008]
Run Code Online (Sandbox Code Playgroud)

但是,我现在想要根据多个属性查找顶点,这就是它变得棘手的地方.为了查找正确的顶点,我正在进行2次调用.has.看起来找到了正确的顶点,但是添加边缘失败了.

gremlin> v1 = g.V.has("x",5).has('y",7)
==>v[200004]
gremlin> v2 = g.V.has("x",3).has('y",5)
==>v[200008]

gremlin> e = g.addEdge(v1, v2, 'edge label')
No signature of method: groovy.lang.MissingMethodException.addEdge() is applicable for argument types: () values: []
Run Code Online (Sandbox Code Playgroud)

基于属性值查找,在两个现有顶点之间添加简单边的最简单方法是什么?

gremlin

6
推荐指数
1
解决办法
8318
查看次数

在Titan(Cassandra)中已存在的顶点属性上创建索引?

我正在使用Titan Server(Cassandra)v 0.3.1.我想在我已经开始使用的顶点键/属性上创建索引.然而,在他们的文档中,Titan解释说:

要按键索引顶点,必须在首次在顶点属性中使用键之前创建相应的键索引.

如果我尝试在已存在的字段上创建索引,我会看到预期的错误:

gremlin> g.createKeyIndex("my_key",Vertex.class)
Cannot add an index to an already existing property key: my_key
Run Code Online (Sandbox Code Playgroud)

但是,即使我尝试通过删除所有顶点和边缘来清除图形,我也会看到同样的错误:

gremlin> g.E.remove()
==>null
gremlin> g.V.remove()
==>null
gremlin> g.createKeyIndex("my_key",Vertex.class)
Cannot add an index to an already existing property key: my_key
Run Code Online (Sandbox Code Playgroud)

因此,my_key即使在删除所有图形元素之后,似乎仍然存在于底层数据存储中.这与文档一致(即使元素已被删除,属性已经"首次使用"),但似乎值得一试.

我的下一步将是重新创建一个新的Cassandra数据存储,但我想知道是否有更好的选择.

在已经在Titan中使用的字段上创建索引的最简单方法是什么?

gremlin titan

6
推荐指数
1
解决办法
3653
查看次数

Titan在索引键上的查找速度非常慢?

使用Titan w/Cassandra v 0.3.1,我创建了一个顶点键索引,createKeyIndexTitan文档中所述.

gremlin> g.createKeyIndex("my_key", Vertex.class)
==>null
Run Code Online (Sandbox Code Playgroud)

我现在在图中有appx 50k节点和186k边缘,我发现使用的查找之间存在显着的性能差异my_key.此查询大约需要5秒钟才能运行:

gremlin> g.V.has("my_key", "abc")
==>v[12345]
Run Code Online (Sandbox Code Playgroud)

而使用索引ID的时间不到1秒:

gremlin> g.v(12345)
==>v[12345]
Run Code Online (Sandbox Code Playgroud)

my_key没有一个独特的约束(我不想),但我想知道是什么导致这种性能差异.如何提高非唯一索引顶点键的查找性能?

gremlin titan

6
推荐指数
1
解决办法
954
查看次数

如何获取Titan中的索引键列表?

我正在使用Titan v0.3.1,并希望看到我已经通过索引编制了哪些键的列表createKeyIndex.我怎样才能做到这一点?

gremlin titan

5
推荐指数
2
解决办法
2903
查看次数

使用Gremlin选择不同的节点?

如果有多个边连接同一对节点,both则会返回重复的节点:

gremlin> v2 = g.addVertex(null,['x':5,'y':7])
==>v[360004]
gremlin> v3 = g.addVertex(null, ['x':2,'y':3])
==>v[360008]
gremlin> g.addEdge(v2,v3,'test')
==>e[6IeZ-1vEw-2F0LaTPQQu][360004-test->360008]
gremlin> g.addEdge(v2,v3,'test 2')
==>e[6If7-1vEw-2F0LaTPQQC][360004-test 2->360008]
gremlin> v2.both.map
==>{y=3, x=2}
==>{y=3, x=2}
Run Code Online (Sandbox Code Playgroud)

如何确保我得到一个明确的节点列表?

gremlin

3
推荐指数
1
解决办法
2322
查看次数

标签 统计

gremlin ×6

titan ×3