Я использую простой сервер Gremlin RESTful и отправляю простые команды внутри запроса POST. Например, если я хочу создать края (в моем конкретном формате), у меня есть следующий шаблон:
const nodeCommandFormat = "graph.addVertex('%s', '%s', 'evid', '%s');"
;
Отправка длинной строки с такими связанными командами отлично работает, все края создаются. У меня вопрос: почему не работает с созданием краев? До сих пор я пробовал использовать эти две команды:
const newEdgeCommandFormat = "g.V().has('evid', '%s').addE('next').to(g.V().has('evid', '%s')).property('count', 1);"
;
or
x = g.V().has('evid', ...).next(); y = g.V().has('evid', ...).next(); x.addEdge('next', y, 'count', 1)
;
Однако, если я объединю 100 таких команд, создается только ребро, соответствующее последней команде. Это почему? С другой стороны, я тоже получаю такие ошибки:
- Использование первого типа создания ребра n: [WARN] HttpGremlinEndpointHandler - Недействительный запрос - ответ с ошибкой 500 Internal Server Error и предоставленный переходник не сопоставляется со значением: v [3091] -> [TinkerGraphStep (vertex , [evid.eq (6ba0b28797dd79a2ee198d8ff280c4ff)])]
- Использование второго типа создания ребер: java.util.NoSuchElementException в org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal.next (DefaultTraversal.java:204)
Как добиться динамического создания ребер с помощью сервера Gremlin REST?
P.S. Все мои узлы имеют свойство "evid" (идентификатор события), которое является значением объекта md5. Я использую это как идентификатор для своих узлов.
Спасибо!