【问题标题】:Getting request data with Gremlin.Net使用 Gremlin.Net 获取请求数据
【发布时间】:2020-05-12 03:17:34
【问题描述】:
我正在使用 Gremlin.Net 和 Neptune,有时某些请求会失败,但错误消息 (InternalFailureException) 中没有太多信息。
我想尝试通过 curl 将请求发送到服务器的“/gremlin/explain” URL 以获取更多信息。
由于我使用 GraphTraversal 类构建请求(而且它很长),因此我正在寻找一种方法来获取与发送的请求等效的 gremlin 命令。
有什么简单的方法可以得到吗?
有没有其他方法可以理解 Neptune 请求失败的原因?
【问题讨论】:
标签:
gremlin
amazon-neptune
gremlinnet
【解决方案1】:
我假设您想要获取查询的字符串表示形式,以便您可以将其发布到/gremlin/explain API。使用 Java 和 Javascript,可以直接使用 TinkerPop 的 Translator 函数在 here 中进行描述。当然,对于 .NET 和 Python 之类的东西 don't exist yet。
由于您的情况听起来您只需要一个一次性解决方案来使用“解释”进行一些分析,您可以在 .NET 中获得字节码的 GraphSON 表示,使用 Gremlin Console's :bytecode command 将其转换为 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 作为主机来重建遍历。