无法在 DSE 图中打印节点属性
Unable to print node properties in DSE graph
抱歉,这可能是关于该主题的非常基本的问题,但我是 Gremlin/DSE Graph 的新手,我尝试了多种方法来提取要插入到我的图表中的数据,但不知何故我无法使其工作.
这是我所拥有的:
1. allow_scans 设置为 true 的图表
2. 具有 propertyKey 和顶点定义的模式以及所有顶点的 NodeID 上的物化索引。
目前没有关系,只有带有数据点的顶点。
我编写了一个程序来将我所有的节点插入到 DSE Graph 中,该程序运行成功,因为在程序创建每个 Vertex 后我得到如下响应:
Result({u'id': {u'out_vertex': {u'community_id': 853347840, u'~label': u'vertex', u'member_id': 14}, u'~type': u'Name', u'local_id': u'00000000-0000-8012-0000-000000000000'}, u'value': u'amount', u'label': u'Name'})]
好的,现在节点已插入,我想提取它们并打印它们的名称:
所以我做了:
g.V().hasLabel('FIELD').has('NodeID','2559b635f077e86c7370ab1c4c798a06').values('Name');
以上操作成功失败,结果为空白。我的意思是它成功运行,输出为空,就像没有错误一样,但是没有输出。 (在 gremlin-console 中为空,在 DataStax Studio 中为 'Success - No Results')
然后我遇到了文档,该文档表明图形不知道 'has' 是否只会 return 一个或多个节点,所以我根据文档和教程使用 next 进行迭代:
g.V().hasLabel('FIELD').has('NodeID','2559b635f077e86c7370ab1c4c798a06').next().values('Name');
即使这样也失败了
org.apache.tinkerpop.gremlin.driver.exception.ResponseException
(Datastax studio 没有显示更多信息)- 我如何进一步调试它?
我什至遇到了使用 map 的 lambda 方法:
g.V().hasLabel('FIELD').has('NodeID','2559b635f077e86c7370ab1c4c798a06').map{it.get().value('Name')};
回复 'it' 未定义。
(我什至尝试过 valueMap - 不确定是否需要它)
我在查找和打印节点的属性值时做错了什么?
有什么方向或查询可以帮助我提取名称和其他属性吗?甚至是多步查询?但是我不认为这应该那么复杂。
更新:
根据回答,我得到以下回溯:
gremlin> :> g.V().hasLabel('FIELD').has('NodeID','2559b635f077e86c7370ab1c4c798a06').valueMap(true).next();
org.apache.tinkerpop.gremlin.groovy.plugin.RemoteException
Type ':help' or ':h' for help.
Display stack trace? [yN]y
org.apache.tinkerpop.gremlin.groovy.plugin.RemoteException
at org.apache.tinkerpop.gremlin.console.groovy.plugin.DriverRemoteAcceptor.submit(DriverRemoteAcceptor.java:170)
at org.apache.tinkerpop.gremlin.console.commands.SubmitCommand.execute(SubmitCommand.groovy:41)
at org.codehaus.groovy.tools.shell.Shell.execute(Shell.groovy:104)
at org.codehaus.groovy.tools.shell.Groovysh.super$execute(Groovysh.groovy)
at sun.reflect.GeneratedMethodAccessor15.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1215)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:132)
at org.codehaus.groovy.tools.shell.Groovysh.executeCommand(Groovysh.groovy:259)
at org.apache.tinkerpop.gremlin.console.GremlinGroovysh.execute(GremlinGroovysh.groovy:84)
at org.codehaus.groovy.tools.shell.Shell.leftShift(Shell.groovy:122)
at org.codehaus.groovy.tools.shell.ShellRunner.work(ShellRunner.groovy:95)
at org.codehaus.groovy.tools.shell.InteractiveShellRunner.super$work(InteractiveShellRunner.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1215)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:132)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuper0(ScriptBytecodeAdapter.java:152)
at org.codehaus.groovy.tools.shell.InteractiveShellRunner.work(InteractiveShellRunner.groovy:124)
at org.codehaus.groovy.tools.shell.ShellRunner.run(ShellRunner.groovy:59)
at org.codehaus.groovy.tools.shell.InteractiveShellRunner.super$run(InteractiveShellRunner.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1215)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:132)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuper0(ScriptBytecodeAdapter.java:152)
at org.codehaus.groovy.tools.shell.InteractiveShellRunner.run(InteractiveShellRunner.groovy:83)
at org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:232)
at org.apache.tinkerpop.gremlin.console.Console.<init>(Console.groovy:152)
at org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:232)
at org.apache.tinkerpop.gremlin.console.Console.main(Console.groovy:401)
我可以在另一个图中做一些类似的操作。图表有问题吗?
更新 2
我的图形顶点定义错误。
深入了解此解决方案的关键在于结果中的 ~label
。它指向 vertex
而应该是 Field
在定义数据时,插入团队不得不将标签放在引号中,而他们不得不将提及标签放在引号中。因此我无法遍历节点。
你需要确保迭代遍历。最常见的是你会使用:
iterate()
得到零结果
next()
得到一个结果
toList()
得到很多结果
我猜 NodeID
是唯一的,所以尝试这样的事情:
g.V().hasLabel('FIELD').has('NodeID','2559b635f077e86c7370ab1c4c798a06').
values('Name').next();
如果您对该顶点的所有属性感兴趣,请尝试:
g.V().hasLabel('FIELD').has('NodeID','2559b635f077e86c7370ab1c4c798a06').
valueMap(true).next();
抱歉,这可能是关于该主题的非常基本的问题,但我是 Gremlin/DSE Graph 的新手,我尝试了多种方法来提取要插入到我的图表中的数据,但不知何故我无法使其工作.
这是我所拥有的: 1. allow_scans 设置为 true 的图表 2. 具有 propertyKey 和顶点定义的模式以及所有顶点的 NodeID 上的物化索引。
目前没有关系,只有带有数据点的顶点。
我编写了一个程序来将我所有的节点插入到 DSE Graph 中,该程序运行成功,因为在程序创建每个 Vertex 后我得到如下响应:
Result({u'id': {u'out_vertex': {u'community_id': 853347840, u'~label': u'vertex', u'member_id': 14}, u'~type': u'Name', u'local_id': u'00000000-0000-8012-0000-000000000000'}, u'value': u'amount', u'label': u'Name'})]
好的,现在节点已插入,我想提取它们并打印它们的名称: 所以我做了:
g.V().hasLabel('FIELD').has('NodeID','2559b635f077e86c7370ab1c4c798a06').values('Name');
以上操作成功失败,结果为空白。我的意思是它成功运行,输出为空,就像没有错误一样,但是没有输出。 (在 gremlin-console 中为空,在 DataStax Studio 中为 'Success - No Results')
然后我遇到了文档,该文档表明图形不知道 'has' 是否只会 return 一个或多个节点,所以我根据文档和教程使用 next 进行迭代:
g.V().hasLabel('FIELD').has('NodeID','2559b635f077e86c7370ab1c4c798a06').next().values('Name');
即使这样也失败了
org.apache.tinkerpop.gremlin.driver.exception.ResponseException
(Datastax studio 没有显示更多信息)- 我如何进一步调试它?
我什至遇到了使用 map 的 lambda 方法:
g.V().hasLabel('FIELD').has('NodeID','2559b635f077e86c7370ab1c4c798a06').map{it.get().value('Name')};
回复 'it' 未定义。
(我什至尝试过 valueMap - 不确定是否需要它)
我在查找和打印节点的属性值时做错了什么?
有什么方向或查询可以帮助我提取名称和其他属性吗?甚至是多步查询?但是我不认为这应该那么复杂。
更新:
根据回答,我得到以下回溯:
gremlin> :> g.V().hasLabel('FIELD').has('NodeID','2559b635f077e86c7370ab1c4c798a06').valueMap(true).next();
org.apache.tinkerpop.gremlin.groovy.plugin.RemoteException
Type ':help' or ':h' for help.
Display stack trace? [yN]y
org.apache.tinkerpop.gremlin.groovy.plugin.RemoteException
at org.apache.tinkerpop.gremlin.console.groovy.plugin.DriverRemoteAcceptor.submit(DriverRemoteAcceptor.java:170)
at org.apache.tinkerpop.gremlin.console.commands.SubmitCommand.execute(SubmitCommand.groovy:41)
at org.codehaus.groovy.tools.shell.Shell.execute(Shell.groovy:104)
at org.codehaus.groovy.tools.shell.Groovysh.super$execute(Groovysh.groovy)
at sun.reflect.GeneratedMethodAccessor15.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1215)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:132)
at org.codehaus.groovy.tools.shell.Groovysh.executeCommand(Groovysh.groovy:259)
at org.apache.tinkerpop.gremlin.console.GremlinGroovysh.execute(GremlinGroovysh.groovy:84)
at org.codehaus.groovy.tools.shell.Shell.leftShift(Shell.groovy:122)
at org.codehaus.groovy.tools.shell.ShellRunner.work(ShellRunner.groovy:95)
at org.codehaus.groovy.tools.shell.InteractiveShellRunner.super$work(InteractiveShellRunner.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1215)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:132)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuper0(ScriptBytecodeAdapter.java:152)
at org.codehaus.groovy.tools.shell.InteractiveShellRunner.work(InteractiveShellRunner.groovy:124)
at org.codehaus.groovy.tools.shell.ShellRunner.run(ShellRunner.groovy:59)
at org.codehaus.groovy.tools.shell.InteractiveShellRunner.super$run(InteractiveShellRunner.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1215)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:132)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuper0(ScriptBytecodeAdapter.java:152)
at org.codehaus.groovy.tools.shell.InteractiveShellRunner.run(InteractiveShellRunner.groovy:83)
at org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:232)
at org.apache.tinkerpop.gremlin.console.Console.<init>(Console.groovy:152)
at org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:232)
at org.apache.tinkerpop.gremlin.console.Console.main(Console.groovy:401)
我可以在另一个图中做一些类似的操作。图表有问题吗?
更新 2
我的图形顶点定义错误。
深入了解此解决方案的关键在于结果中的 ~label
。它指向 vertex
而应该是 Field
在定义数据时,插入团队不得不将标签放在引号中,而他们不得不将提及标签放在引号中。因此我无法遍历节点。
你需要确保迭代遍历。最常见的是你会使用:
iterate()
得到零结果next()
得到一个结果toList()
得到很多结果
我猜 NodeID
是唯一的,所以尝试这样的事情:
g.V().hasLabel('FIELD').has('NodeID','2559b635f077e86c7370ab1c4c798a06').
values('Name').next();
如果您对该顶点的所有属性感兴趣,请尝试:
g.V().hasLabel('FIELD').has('NodeID','2559b635f077e86c7370ab1c4c798a06').
valueMap(true).next();