Подключение к удаленному 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 обеспечивает доступ к базе данных единым способом к удаленному, а также для встроенных баз данных (включая базы данных в памяти)