Я пытаюсь создать некоторые узлы в Neo4j с помощью Java через CYPHER, в частности с JSON и http://hostname:7474/db/data/transaction/commit
.Проблемы с сохранением Neo4j с большими свойствами
Мой тест должен создать некоторые узлы со следующими Cypher утверждениями:
MERGE (a:LABEL1 { name: 'nameNNN', version: 1001 })
SET a.PROP1='<data>'
RETURN id(a)
Пока мало, например, один или несколько свойств с < 1kB в сумме, все работает. Если попытка записать узлы с большим свойством (10 МБ двоичной base64 данные кодируются для примера), тест создает 9 или 10 узлов:
{errors=[], results=[{"data":[{"row":[10009]}],"columns":["id(a)"]}]}
{errors=[], results=[{"data":[{"row":[10010]}],"columns":["id(a)"]}]}
...
{errors=[], results=[{"data":[{"row":[10011]}],"columns":["id(a)"]}]}
, а затем начинает возвращать:
{errors=[], results=[]}
Если Я перезапускаю тест, я сразу получаю пустой результат. Если я перезапущу сервер Neo4j, , я могу либо обновить эти 9 или 10 узлов, либо создать 9 или 10 узлов с разными именами и , тогда снова получаю только пустые результаты.
Как я понимаю, каждое утверждение представляет собой одну транзакцию (я выполняю одно слияние на запрос сервера).
Является ли это ошибкой или пределом сообщества (2.1.6) или я что-то не так?
Обязательно используйте параметры для своих операторов, а не простые данные в запросе. –
Также убедитесь, что у вас есть индекс/ограничение по крайней мере на: Label1 (name) –
Если у вас есть буквальные данные, возможно, что-то сломает разбор строки? –