3

Neo4J 2.0.0-M5 を使用して、次の説明に従って、バッチを使用してデータベースを作成しようとしています: http://docs.neo4j.org/chunked/milestone/rest-api-batch-ops.html

私がやりたいことは、「get_or_create」モードでノードと関係を挿入して、冗長なノードと関係を作成せずにバッチを複数回実行できるようにすることです。

一意のノードを作成するには/index/node/indexname?uniqueness=get_or_create、次のようにします。

POST /db/data/batch [
{"method":"POST","to":"/index/node/concept?uniqueness=get_or_create","id":0,"body":{"key":"nom", "value":"organisation", "properties": {"nom":"organisation"}}},
{"method":"POST","to":"/index/node/concept?uniqueness=get_or_create","id":1,"body":{"key":"nom", "value":"établissement", "properties": {"nom":"établissement"}}}
]

しかし、インデックスが作成された 2 つのノード間に一意の関係を作成する方法がわかりません。

「établissement」と「組織」の間には「est」関係があると述べたいと思います。私が試してみると:

POST /db/data/batch [
{"method":"POST","to":"/index/node/concept?uniqueness=get_or_create","id":0,"body":{"key":"nom", "value":"organisation", "properties": {"nom":"organisation"}}},
{"method":"POST","to":"/index/node/concept?uniqueness=get_or_create","id":1,"body":{"key":"nom", "value":"établissement", "properties": {"nom":"établissement"}}},
{"method":"POST","to":"{1}/relationships","body":{"to":"{0}","type":"est"}},
{"method":"POST","to":"/index/relationship/my_rels?uniqueness=get_or_create","body":{"key":"nom","value":"est","uri":"{1}"}}
]

私は得る:

==> 500 Internal Server Error
==> {
==>   "message" : "",
==>   "exception" : "BatchOperationFailedException",
==>   "fullname" : "org.neo4j.server.rest.domain.BatchOperationFailedException",
==>   "stacktrace" : ["org.neo4j.server.rest.batch.NonStreamingBatchOperations.invoke(NonStreamingBatchOperations.java:63)", "org.neo4j.server.rest.batch.BatchOperations.performRequest(BatchOperations.java:188)", "org.neo4j.server.rest.batch.BatchOperations.parseAndPerform(BatchOperations.java:159)", "org.neo4j.server.rest.batch.NonStreamingBatchOperations.performBatchJobs(NonStreamingBatchOperations.java:48)", "org.neo4j.server.rest.web.BatchOperationService.batchProcess(BatchOperationService.java:123)", "org.neo4j.server.rest.web.BatchOperationService.performBatchOperations(BatchOperationService.java:73)", "java.lang.reflect.Method.invoke(Method.java:606)", "org.neo4j.server.rest.transactional.TransactionalRequestDispatcher.dispatch(TransactionalRequestDispatcher.java:132)", "org.neo4j.server.rest.security.SecurityFilter.doFilter(SecurityFilter.java:112)" ]
==> }

私はこの問題に悩まされているので、アドバイスをいただければ幸いです。ありがとうございました!

グレゴワール

編集:問題は、一意のノードをバッチ内から参照できないバグに起因するようです: https://github.com/neo4j/neo4j/issues/84

4

1 に答える 1

1

回避策(あなたが言及したgithubバグに記載されているように)は、Cypherを使用することです。

Batch と Cypher を使用した例:

[
    {"method":"POST","to":"/index/node/concept?uniqueness=get_or_create","id":0,"body":{"key":"nom", "value":"organisation", "properties": {"nom":"organisation"}}},
    {"method":"POST","to":"/index/node/concept?uniqueness=get_or_create","id":1,"body":{"key":"nom", "value":"établissement", "properties": {"nom":"établissement"}}},
    {
        "method": "POST",
        "to": "/cypher",
        "id": 1,
        "body": {
          "query" : "START a=node:concept(nom={aVal}), b=node:concept(nom={bVal}) CREATE b-[r:est]->a RETURN a, b, r",
          "params" : {
            "aVal" : "établissement",
            "bVal" : "organisation"
          }
        }
    }
]

出力:

[{
    "id": 0,
    "location": "http://localhost:7474/db/data/index/node/concept/nom/organisation/18688",
    "body": {
        "extensions": {},
        "paged_traverse": "http://localhost:7474/db/data/node/18688/paged/traverse/{returnType}{?pageSize,leaseTime}",
        "outgoing_relationships": "http://localhost:7474/db/data/node/18688/relationships/out",
        "all_typed_relationships": "http://localhost:7474/db/data/node/18688/relationships/all/{-list|&|types}",
        "traverse": "http://localhost:7474/db/data/node/18688/traverse/{returnType}",
        "property": "http://localhost:7474/db/data/node/18688/properties/{key}",
        "all_relationships": "http://localhost:7474/db/data/node/18688/relationships/all",
        "self": "http://localhost:7474/db/data/node/18688",
        "outgoing_typed_relationships": "http://localhost:7474/db/data/node/18688/relationships/out/{-list|&|types}",
        "properties": "http://localhost:7474/db/data/node/18688/properties",
        "incoming_relationships": "http://localhost:7474/db/data/node/18688/relationships/in",
        "incoming_typed_relationships": "http://localhost:7474/db/data/node/18688/relationships/in/{-list|&|types}",
        "create_relationship": "http://localhost:7474/db/data/node/18688/relationships",
        "data": {
            "nom": "organisation"
        },
        "indexed": "http://localhost:7474/db/data/index/node/concept/nom/organisation/18688"
    },
    "from": "/index/node/concept?uniqueness=get_or_create"
}, {
    "id": 1,
    "location": "http://localhost:7474/db/data/index/node/concept/nom/%EF%BF%BDtablissement/18689",
    "body": {
        "extensions": {},
        "paged_traverse": "http://localhost:7474/db/data/node/18689/paged/traverse/{returnType}{?pageSize,leaseTime}",
        "outgoing_relationships": "http://localhost:7474/db/data/node/18689/relationships/out",
        "all_typed_relationships": "http://localhost:7474/db/data/node/18689/relationships/all/{-list|&|types}",
        "traverse": "http://localhost:7474/db/data/node/18689/traverse/{returnType}",
        "property": "http://localhost:7474/db/data/node/18689/properties/{key}",
        "all_relationships": "http://localhost:7474/db/data/node/18689/relationships/all",
        "self": "http://localhost:7474/db/data/node/18689",
        "outgoing_typed_relationships": "http://localhost:7474/db/data/node/18689/relationships/out/{-list|&|types}",
        "properties": "http://localhost:7474/db/data/node/18689/properties",
        "incoming_relationships": "http://localhost:7474/db/data/node/18689/relationships/in",
        "incoming_typed_relationships": "http://localhost:7474/db/data/node/18689/relationships/in/{-list|&|types}",
        "create_relationship": "http://localhost:7474/db/data/node/18689/relationships",
        "data": {
            "nom": "�tablissement"
        },
        "indexed": "http://localhost:7474/db/data/index/node/concept/nom/%EF%BF%BDtablissement/18689"
    },
    "from": "/index/node/concept?uniqueness=get_or_create"
}, {
    "id": 1,
    "body": {
        "columns": ["a", "b", "r"],
        "data": [
            [{
                "paged_traverse": "http://localhost:7474/db/data/node/18689/paged/traverse/{returnType}{?pageSize,leaseTime}",
                "outgoing_relationships": "http://localhost:7474/db/data/node/18689/relationships/out",
                "data": {
                    "nom": "�tablissement"
                },
                "traverse": "http://localhost:7474/db/data/node/18689/traverse/{returnType}",
                "all_typed_relationships": "http://localhost:7474/db/data/node/18689/relationships/all/{-list|&|types}",
                "self": "http://localhost:7474/db/data/node/18689",
                "all_relationships": "http://localhost:7474/db/data/node/18689/relationships/all",
                "property": "http://localhost:7474/db/data/node/18689/properties/{key}",
                "properties": "http://localhost:7474/db/data/node/18689/properties",
                "outgoing_typed_relationships": "http://localhost:7474/db/data/node/18689/relationships/out/{-list|&|types}",
                "incoming_relationships": "http://localhost:7474/db/data/node/18689/relationships/in",
                "incoming_typed_relationships": "http://localhost:7474/db/data/node/18689/relationships/in/{-list|&|types}",
                "extensions": {},
                "create_relationship": "http://localhost:7474/db/data/node/18689/relationships"
            }, {
                "paged_traverse": "http://localhost:7474/db/data/node/18688/paged/traverse/{returnType}{?pageSize,leaseTime}",
                "outgoing_relationships": "http://localhost:7474/db/data/node/18688/relationships/out",
                "data": {
                    "nom": "organisation"
                },
                "traverse": "http://localhost:7474/db/data/node/18688/traverse/{returnType}",
                "all_typed_relationships": "http://localhost:7474/db/data/node/18688/relationships/all/{-list|&|types}",
                "self": "http://localhost:7474/db/data/node/18688",
                "all_relationships": "http://localhost:7474/db/data/node/18688/relationships/all",
                "property": "http://localhost:7474/db/data/node/18688/properties/{key}",
                "properties": "http://localhost:7474/db/data/node/18688/properties",
                "outgoing_typed_relationships": "http://localhost:7474/db/data/node/18688/relationships/out/{-list|&|types}",
                "incoming_relationships": "http://localhost:7474/db/data/node/18688/relationships/in",
                "incoming_typed_relationships": "http://localhost:7474/db/data/node/18688/relationships/in/{-list|&|types}",
                "extensions": {},
                "create_relationship": "http://localhost:7474/db/data/node/18688/relationships"
            }, {
                "start": "http://localhost:7474/db/data/node/18688",
                "data": {},
                "self": "http://localhost:7474/db/data/relationship/44187",
                "property": "http://localhost:7474/db/data/relationship/44187/properties/{key}",
                "properties": "http://localhost:7474/db/data/relationship/44187/properties",
                "type": "est",
                "extensions": {},
                "end": "http://localhost:7474/db/data/node/18689"
            }]
        ]
    },
    "from": "/cypher"
}]
于 2013-10-25T17:32:45.677 に答える