Как подключиться к локально установленному серверу neo4j с использованием Java
Я новичок в Neo4J и не смог найти ответ на мой вопрос, несмотря на часы работы в Google.
До сих пор я следил за учебниками, и теперь у меня есть общее представление о том, как и когда использовать Neo4j. Теперь я собираюсь начать модифицировать свой код hello-world и подключиться к серверу Neo4J, локально установленному на моей машине, доступному через http://127.0.0.1:7474.
Исходное соединение (с использованием встроенной базы данных):
GraphDatabaseService gdb = new EmbeddedGraphDatabase("c:\\helloworld\\data\\graph.db");
Вопрос в том, есть ли способ изменить эту строку для подключения к моей базе данных "server" в c:\neo4j\data\graph.db? Сервер работает в настоящее время как служба Windows, и я могу просматривать его базу данных с помощью инструмента веб-администратора. В настоящее время я не заинтересован в использовании REST API, так как сервер и клиентское приложение работают на одном компьютере.
Я чувствую, что мне не хватает чего-то очевидного здесь...
Ответы
Ответ 1
Служба Windows предоставляет интерфейс REST.
Вложенный интерфейс совершенно другой - вы указываете его на структуру файловой системы базы данных, а затем получаете доступ к ней через вызовы методов Java.
Если вы оба одновременно работаете, указывая на одни и те же данные, тогда могут произойти плохие вещи (на самом деле, я думаю, он обнаруживает это и предотвращает его). Поэтому вам, вероятно, нужно остановить службу и/или сделать резервную копию данных из этого экземпляра в другой каталог. Затем отредактируйте конструктор EmbeddedGraphDatabase
, чтобы указать на этот каталог.
В руководстве описывается встроенный интерфейс Java, как вы, вероятно, видели. См. Также этот раздел, в котором кратко упоминается довольно приятный веб-интерфейс управления.
Ответ 2
Я не смог найти какой-либо примерный код в обертке, поэтому вот что я сделал.
EmbeddedGraphDatabase graphDb = new EmbeddedGraphDatabase("C:\\neo4j\\data\\graph.db");
WrappingNeoServerBootstrapper srv = new WrappingNeoServerBootstrapper(graphDb);
srv.start();
try {
while (System.in.read() != 46) {
// wait until we send a period (.) to kill the server
}
} catch (IOException e) {}
srv.stop();
Это позволит вам посетить localhost: 7474 и увидеть инструмент webadmin так же, как запустить сервер, но и продолжить свой обычный Java-код (напишите свой собственный простой API, используя входной поток для чтения команд).
Ответ 3
Я знаю его старый пост, но все же добавляю свой ответ.
Вы можете использовать Neo4jConnection.
Пример кода
Neo4jConnection connect=null;
connect = new Driver(). connect(DB_URL, new Properties());
ResultSet resultSet=connect.createStatement().executeQuery("YOUR QUERY")
Ответ 4
Завершено использование Джерси-клиента HttpBasicAuthFilter
Ваши параметры должны быть примерно такими:
public static final String DATABASE_ENDPOINT = "http://localhost:7474/db/data";
public static final String DATABASE_USERNAME = "neo4j";
public static final String DATABASE_PASSWORD = "3c0a0a6ea1sdsdsdsdsdsdsdsdf2a94d";
private String callRest(String query) {
final String cypherUrl = ENDPOINT + "/cypher";
Client c = Client.create();
c.addFilter(new HTTPBasicAuthFilter(USERNAME, PASSWORD));
WebResource resource = c.resource(cypherUrl);
String request = "{\"query\":\"" + query + "\"}";
ClientResponse response = resource.accept(MediaType.APPLICATION_JSON)
.type(MediaType.APPLICATION_JSON).entity(request)
.post(ClientResponse.class);
String object = response.getEntity(String.class);
response.close();
return object;
}
Последний клиент в Джерси можно найти, добавив его в ваш mvn pom, если он еще не находится в вашем дереве зависимостей.
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.18.3</version>
</dependency>
Смотрите: https://stackoverflow.com/posts/28303766