Как подключиться к локально установленному серверу neo4j с помощью Java - PullRequest
16 голосов
/ 22 февраля 2012

Я новичок в Neo4J и не могу найти ответ на свой вопрос, несмотря на то, что много часов гуглю.

До сих пор я следовал учебным пособиям, и теперь у меня есть общее представление о том, как /когда использовать Neo4j.Теперь я собираюсь приступить к изменению своего кода hello-world и подключиться к серверу Neo4J, локально установленному на моей машине, доступный через http://127.0.0.1:7474.

Исходное соединение (с использованием встроенной базы данных):

GraphDatabaseService gdb = new EmbeddedGraphDatabase("c:\\helloworld\\data\\graph.db");

Вопрос в том, есть ли способ изменить эту строку для подключения к моей «серверной» базе данных вместо c: \ neo4j \ data \ graph.db?В настоящее время сервер работает в качестве службы Windows, и я могу просмотреть его базу данных с помощью инструмента веб-администратора.В настоящее время я не заинтересован в использовании REST API, поскольку сервер и клиентское приложение работают на одной машине.

Мне кажется, что я упускаю что-то очевидное здесь ...

Ответы [ 4 ]

5 голосов
/ 01 февраля 2013

Я не смог найти пример кода на оболочке, поэтому вот что я в итоге сделал.

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 голосов
/ 22 февраля 2012

Служба Windows предоставляет интерфейс REST.

Встроенный интерфейс совершенно другой - вы указываете его на структуру файла базы данных, а затем получаете к нему доступ через вызовы методов Java.

Если вы оба работаете в одно и то же время, указывая на одни и те же данные, тогда могут произойти плохие вещи (на самом деле, я думаю, что это обнаруживает и предотвращает это). Поэтому вам, вероятно, нужно остановить службу и / или сделать резервную копию данных из этого экземпляра в другой каталог. Затем отредактируйте ваш EmbeddedGraphDatabase конструктор, чтобы он указывал на этот каталог.

Руководство описывает встроенный интерфейс Java, как вы, вероятно, видели. См. Также этот раздел , в котором кратко упоминается довольно приятный веб-интерфейс управления.

1 голос
/ 04 февраля 2015

Завершено с использованием 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

1 голос
/ 09 июня 2014

Я знаю, это старый пост, но все еще добавляю свой ответ Вы можете использовать Neo4jConnection. Пример кода

Neo4jConnection connect=null;
connect = new Driver(). connect(DB_URL, new Properties());
ResultSet resultSet=connect.createStatement().executeQuery("YOUR QUERY")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...