2015-04-15 89 views
2

Neo4j的REST接口返回的響應非常冗長 - 它們不僅返回請求的每個節點中的數據,而且還返回請求的每個節點的完全可發現性。如果我只是想要一些節點數據,結果大約比我實際需要的大20倍,並且遇到了內存不足異常等問題。Neo4j - 減少在REST響應中返回的字段的數量

例如,對於一個節點的請求可能返回以下:

{ 
    "labels" : "http://giuncwy02:7475/db/data/node/67/labels", 
    "outgoing_relationships" : "http://giuncwy02:7475/db/data/node/67/relationships/out", 
    "data" : { 
    "id" : "908754897618956", 
    "currentStatus" : "Active", 
    }, 
    "traverse" : "http://giuncwy02:7475/db/data/node/67/traverse/{returnType}", 
    "all_typed_relationships" : "http://giuncwy02:7475/db/data/node/67/relationships/all/{-list|&|types}", 
    "self" : "http://giuncwy02:7475/db/data/node/67", 
    "property" : "http://giuncwy02:7475/db/data/node/67/properties/{key}", 
    "outgoing_typed_relationships" : "http://giuncwy02:7475/db/data/node/67/relationships/out/{-list|&|types}", 
    "properties" : "http://giuncwy02:7475/db/data/node/67/properties", 
    "incoming_relationships" : "http://giuncwy02:7475/db/data/node/67/relationships/in", 
    "extensions" : { }, 
    "create_relationship" : "http://giuncwy02:7475/db/data/node/67/relationships", 
    "paged_traverse" : "http://giuncwy02:7475/db/data/node/67/paged/traverse/{returnType}{?pageSize,leaseTime}", 
    "all_relationships" : "http://giuncwy02:7475/db/data/node/67/relationships/all", 
    "incoming_typed_relationships" : "http://giuncwy02:7475/db/data/node/67/relationships/in/{-list|&|types}", 
    "metadata" : { 
    "id" : 67, 
    "labels" : [ "Substation" ] 
    } 
} 

有沒有減少在響應中返回的信息量的方法嗎?我真正想爲每個節點是這樣的:

{ 
    "id" : "908754897618956", 
    "currentStatus" : "Active", 
} 

甚至:

[ "908754897618956", "Active" ] 

是可實現的?當我請求數十萬個節點時,它會產生很大的差異。

+1

其餘格式絕對過於冗長。在將來的版本中,對http tx端點使用的協議有一些計劃的修改。 您可能需要考慮將resultDataContent更改爲「圖形」或「行」,以減少冗長的響應。 http://neo4j.com/docs/stable/rest-api-transactional.html#rest-api-return-results-in-graph-format –

+0

謝謝Christophe,有沒有使用事務API的相應選項?現在我正在打擊'/ db/data/label/MyLabel/nodes'。 –

+0

不是我所知道的。順便說一句,我認爲這些終端越來越少用於tx api的青睞。 –

回答

2

沒有配置選項來調整現有的db/data/node REST端點。

隨着Christophe草圖繪製,您可以使用事務性端點和定製的Cypher語句來返回您想要查看的屬性。

另一種選擇是將自己的unmanaged extension寫入Neo4j服務器,該服務器按照您的指定返回節點。

最低的掛果肯定是第一種方法。