gpt4 book ai didi

java - 使用 Java/Scala 的远程 Gremlin 服务器图突变

转载 作者:行者123 更新时间:2023-12-01 14:28:57 26 4
gpt4 key购买 nike

我正在尝试使用遍历在远程 Gremlin 服务器上修改顶点,但似乎只有在创建顶点的遍历中我还可以添加属性,当开始​​新的遍历时我不添加属性。

Scala/Java集群连接设置代码:

val mapper = GryoMapper.build()
val cluster = Cluster.build().serializer(new GryoMessageSerializerV1d0(mapper)).create
val client = cluster.connect[org.apache.tinkerpop.gremlin.driver.Client.ClusteredClient]()
val graph = EmptyGraph.instance()
val g = graph.traversal().withRemote(DriverRemoteConnection.using(cluster, "g"))

这个有效:

val v1 = g.addV("person").property("name","stephen").next()

这不是:

g.V(v1.id()).property("age","27")

这也不会甚至抛出 java.lang.IllegalStateException (propertyAdditionNotSupported) 因为顶点是 org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertex:

v1.property("age","27")

如果我使用 Gremlin 控制台并远程连接到 Gremlin 服务器,我可以毫无问题地进行这两项操作。

:remote connect tinkerpop.server conf/remote.yaml
gremlin> :> g.addV('person').property('name','stephen')
==>v[82128]
gremlin> :> g.V(82128).property('age','27')
==>v[82128]
gremlin> :> g.V(82128).valueMap()
==>[name:[stephen],age:[27]]

是 Java 远程实现有问题还是我遗漏了什么?

最佳答案

我不确定您使用的是哪种 Graph 实现,但这对我来说适用于 TinkerGraph:

gremlin> graph = EmptyGraph.instance()
==>emptygraph[empty]
gremlin> cluster = Cluster.open()
==>localhost/127.0.0.1:8182
gremlin> g = graph.traversal().withRemote(DriverRemoteConnection.using(cluster, "g"))
==>graphtraversalsource[emptygraph[empty], standard]
gremlin> v = g.addV().property('name','stephen').next()
==>v[0]
gremlin> g.V(v.id()).property('favorite','red')
==>v[0]
gremlin> g.V().valueMap()
==>[name:[stephen],favorite:[red]]

我会注意到,在你的情况下,你不会 next() 出顶点:

val v1 = g.addV("person").property("name","stephen")

我假设即使在 Gremlin Scala 语法中你也应该这样做:

val v1 = g.addV("person").property("name","stephen").next()

否则 v1 将只是一个 Traversal 实例,您将获得 Traversalid() 并且不是 顶点。所以我认为这应该可以解决您的问题。

请注意,v1.property("age","27") 不会因为您解释的原因而工作 - 顶点是“分离的”并且您不能直接使用它,除非将它传递回另一个遍历。您还应该能够在大多数图表上执行此操作:

gremlin> g.V(v).property('favorite','red')
==>v[0]

不引用 id()

关于java - 使用 Java/Scala 的远程 Gremlin 服务器图突变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44653498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com