我正在使用 Gremlin.Net 和Neptune,偶尔一些请求失败,错误消息中没有太多信息(InternalFailureException(。
我想尝试通过 curl 将请求发送到服务器的"/gremlin/explain"URL 以获取更多信息。
由于我使用 GraphTraversal 类构建请求(它很长(,因此我正在寻找一种方法来获取与发送的请求等效的 gremlin 命令。
有没有简单的方法来获取它?
有没有其他方法可以理解为什么海王星请求失败?
我假设您希望获取查询的字符串表示形式,以便您可以将其发布到/gremlin/explain
API。使用Java和Javascript,可以使用此处描述的TinkerPop的Translator
函数直接执行此类操作。当然,对于.NET和Python来说,这样的东西还不存在。
由于您的情况听起来像您只需要一个一次性的解决方案来使用"解释"进行一些分析,因此您可以在 .NET 中获取字节码的 GraphSON 表示形式,请使用 Gremlin 控制台的:bytecode
命令将其转换为String
表示形式。
因此,首先获取Bytecode
对象为 GraphSON:
var bytecode = g.V().Out("knows").Bytecode;
var writer = new GraphSON3Writer();
var graphSON = writer.WriteObject(bytecode)
将该"graphSON"字符串复制/粘贴到 Gremlin 控制台中:
gremlin> g = TinkerGraph.open().traversal()
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
gremlin> :bytecode translate g {"@type":"g:Bytecode","@value":{"step":[["V"],["out","knows"]]}}
==>g.V().out("knows")
请注意,我在那里使用TinkerGraph作为主机来重建遍历。