Создание нескольких ребер - сервер Gremlin REST

Я использую простой сервер 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. Я использую это как идентификатор для своих узлов.

Спасибо!


person Adrian Pop    schedule 17.07.2017    source источник


Ответы (1)


.iterate() ваши обходы. Это выделено в руководстве по началу работы в конце раздел «Первые 5 минут».

person Daniel Kuppitz    schedule 31.08.2017