簡體   English   中英

使用來自 Go 的 Gremlin 在 Neptune 中創建圖形時出錯

[英]Error creating graph in Neptune using Gremlin from Go

我正在使用 Gremlin 創建/更新(更新插入)圖表。 我正在使用 Go、Gremlin go 驅動程序 Gremlingo 和圖形數據庫 AWS Neptune。

我從 Neptune 返回以下錯誤:

2023/01/27 12:44:59 Error occurred during operation gremlinServerWSProtocol.responseHandler(): 'E0502: error in read loop, error message '{code:243 message:{"code":"InvalidParameterException","requestId":"12de5fcc-16f0-4ac3-a64a-7f0c0068eff6","detailedMessage":"The provided traverser does not map to a value: v[0ac2fa61-8182-ec95-3fb2-8946dae540de][NeptuneVertex]->[SelectOneStep(last,e,null)][DefaultGraphTraversal] parent[[NeptuneGraphQueryStep(Vertex), NeptuneTraverserConverterStep, NeptuneMemoryTrackerStep, FoldStep, CoalesceStep([[UnfoldStep, AddPropertyStep({value=[{\"mimeType\":\"application/vnd.adobe.hz.express+dcx\",\"docModelVersion\":95,\"draftDocumentModels\":\"\"}], key=[value]})], [AddVertexStep({component_id=[DocumentProperties], label=[Component], asset_id=[urn:aaid:sc:VA6C2:004ba5d7-5e1c-47a6-824a-0d0822e6415b], entity_id=[#root], version=[#head], value=[{\"mimeType\":\"application/vnd.adobe.hz.express+dcx\",\"docModelVersion\":95,\"draftDocumentModels\":\"\"}]})]]), NoOpBarrierStep(null), AddEdgeStep({~to=[[SelectOneStep(last,e,null)]], label=[ATTACHED_TO]}), NoneStep]]"} attributes:map[]}'. statusCode: 243'

在執行以下查詢時。

func (n NeptuneGremlinGraph) Put(assetID string, version string, records []les.DeltaEditRecord) error {
    g := gremlin.Traversal_().WithRemote(n.connection)
    anonT := gremlin.T__
    for _, r := range records {
        promise := g.V().HasLabel("Entity").
            Has("asset_id", assetID).
            Has("version", version).
            Has("entity_id", r.EntityID).
            Fold().
            Coalesce(anonT.Unfold(),
                anonT.AddV("Entity").
                    Property("asset_id", assetID).
                    Property("version", version).
                    Property("entity_id", r.EntityID)).
            As("e").
            V().HasLabel("Component").
            Has("asset_id", assetID).
            Has("version", version).
            Has("entity_id", r.EntityID).
            Has("component_id", r.ComponentID).
            Fold().
            Coalesce(anonT.Unfold().
                Property("value", r.Value),
                anonT.AddV("Component").
                    Property("asset_id", assetID).
                    Property("version", version).
                    Property("entity_id", r.EntityID).
                    Property("component_id", r.ComponentID).
                    Property("value", r.Value)).
            AddE("ATTACHED_TO").To("e").Iterate()
        err := <-promise
        if err != nil {
            return err
        }
    }

    return nil
}

我不確定哪里出了問題,也無法完全解釋錯誤消息。 任何人都可以看到我的查詢有什么問題嗎?

Fold后, As步驟中的任何先前標簽都將丟失。 我懷疑這里發生的是AddE步驟失敗,因為To('e')沒有解析。 嘗試將As('e')更改為Store('e')並查看是否有幫助。 您還需要將To更改為To(Cap('e').Unfold())

這是一個使用 Gremlin 控制台的簡單示例

gremlin> g.V(1).store('e').V(2).addE('test').to(cap('e').unfold())

==>e[61286][2-test->1]  

正如我們在這個問題中討論的那樣,新的MergeVMergeE步驟將在這種情況下提供很大幫助。 當您將多個Fold ... Coalesce模式鏈接在一起時,您只會遇到剛剛遇到的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM