简体   繁体   中英

Slow Cypher neo4j results when using REST GraphDb

I am working with the neo4j-rest-graphdb an just tried to use Cypher for fetching a simple Node result.

CypherParser parser = new CypherParser();
ExecutionEngine engine = new ExecutionEngine(graphDbService);

Query query = parser.parse( "START referenceNode = node (0) " +
                            "MATCH referenceNode-[PRODUCTS_REFERENCE]->products-[PRODUCT]->product " +
                            "RETURN product.productName " +
                            "ORDER BY product.productId " +
                            "SKIP 20"
                            "LIMIT 10");
 ExecutionResult result = engine.execute( query );

 Iterator<Map<String, Object>> iterator = result.javaIterator();

What is the best practise to iterate through the result? The last line causes my service to hang for ~6 sec. Without the iterator at the end the application is quiet fast. I also tried the webadmin cypher terminal, the results are fetched within 50ms. Am i doing something wrong?

In your case all the cypher operations (graph-matching, filtering etc. would go over the wire which is awfully chatty and slow) you don't want that !

The neo4j-rest-graphdb supports remote execution of cypher out of the box:

Just do, something like shown in this testcase :

    RestCypherQueryEngine queryEngine = new RestCypherQueryEngine(restGraphDatabase.getRestAPI());      
    final String queryString = "start n=node({reference}) return n";
    Map params = MapUtil.map("reference",0);
    final Node result = (Node) queryEngine.query(queryString, params).to(Node.class).single();
    assertEquals(restGraphDatabase.getReferenceNode(), result);

If I understood you correctly, graphDbService is a REST graph database, correct?

If you want to use Cypher on the Server, you should instead use the CypherPlugin. Look here: http://docs.neo4j.org/chunked/snapshot/cypher-plugin.html

I hope this helps,

Andrés

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM