Подключение к удаленному neo4j с помощью Java API

Я пишу тестовое приложение, которое использует neo4j. Я пытался следовать нескольким учебникам, читая онлайн, а также проверяя документацию, и наиболее распространенный способ использования Java API-интерфейса-использовать встроенный neo4j.

теперь по нескольким причинам это не будет работать для меня. (Напр. сервер на различной машине, etc.)

я использую :

"org.neo4j" % "neo4j" % "2.1.5",
"org.neo4j" % "neo4j-rest-graphdb" % "2.0.1",

и подключение к neo4j таким образом:

GraphDatabaseService gds = new RestGraphDatabase("http://neo4jserver_address:7474/db/data");

как anwsered раньше на другом посту так, то RestGraphDatabase не является полной реализацией GraphDatabaseService, что приводит ко всем видам проблем при попытке использовать, например, другие библиотеки, такие как:

"com.graphaware.neo4j" % "timetree" % "2.1.5.25.18",

и RestGraphDatabase не позволяет использовать GlobalGraphOperations из-за этой же проблемы.

Я пробовал взламывать официальную документацию, которую я нашел, и снова, приведенные примеры для встроенной БД.

мой вопрос в том, знает ли кто-нибудь правильный способ правильно подключиться к удаленному серверу neo4j и где в документации я могу прочитать об этом бит?

кроме того , нет, я не использую neo4j HA, хотя у меня есть лицензия на тестирование 1 года.

PS-подключение через REST не требуется. Протокол не имеет значения, вопрос в том, как подключиться к удаленному серверу neo4j (по любому протоколу) с помощью API и в конечном итоге с правильной, полной реализацией GraphDatabaseService

3 ответов


Я знаю, что вы действительно хотите это GraphDatabaseService объект, подключенный к конечной точке RESTful. Это то, что говорит ваш код, но, основываясь на моем лучшем понимании situatioin, у вас также есть факты о проблемах и ограничениях с этой реализацией.

хорошо, так что учитывая это-я думаю, что ваш лучший ответ -используйте REST API непосредственно из java. Эта ссылка содержит подробную документацию. Но по сути, вы не будете иметь дело с Node и Relationship объекты, но скорее вы будете работать с HTTP-запросами и ответами и обработкой JSON.

см. примеры за ссылкой, которую я предоставил, он предоставляет множество примеров кода для того, как заставить это работать. Хорошей новостью является то, что вы можете делать что угодно на стороне сервера. Плохая новость в том, что это менее удобно. Я тоже надеюсь на действительно хороший GraphDatabaseService реализация в будущем. Было бы очень мощно, если бы мой код не заботился о том, является ли DB локальным файл или удаленная служба.


Я не знаю, Может ли это быть вашей помощью;

RestAPI restapi = new RestAPIFacade("http://localhost:7474/db/data")
RestCypherQueryEngine rcqer=new RestCypherQueryEngine(restapi)

это позволяет использовать фактический запрос шифрования, который вы выполняете в оболочке neo4j;

String query = "Start n=node(*) return count(n) as totalRecords"
    QueryResult<Map<String,Object>> queryResult = rcqer.query(query,org.neo4j.helpers.collection.MapUtil.map("null",null))
    for(Map<String,Object> row:queryResult){
        numberOfNodes = row.get("totalRecords")
    }

Я думаю JCypher обеспечивает то, что вам нужно:

JCypher обеспечивает доступ к базе данных единым способом к удаленному, а также для встроенных баз данных (включая базы данных в памяти)