Можно ли использовать стратегии с удаленным обходом в Gremlin?

Я взаимодействую с JanusGraph, используя Gremlin-Java в удаленном режиме. Теперь я определяю новое свойство на моих краях, чтобы фильтровать их при использовании определенной стратегии. Ниже приведен код, который я пытаюсь запустить в своем приложении, но эта стратегия, похоже, полностью игнорируется. Работает тот же код, который выполняется на локальном экземпляре TP.

graph.traversal()
    .withRemote(DriverRemoteConnection.using(cluster, "g"))
    .withStrategies(SubgraphStrategy.build().edges(__.has("field", "condition")).create())

Кто-нибудь знает, если эта функция до сих пор не поддерживается? Я использую Janus 0.1.0.


person Cattani Simone    schedule 04.07.2017    source источник


Ответы (1)


Похоже, это ошибка в Apache TinkerPop. Я открыл проблему, чтобы отследить это.

Один из обходных путей - настроить конфигурацию удаленного драйвера для использования сериализатора GraphSON вместо Gryo. Это не требует никаких изменений в конфигурации сервера. Например, в conf/remote-objects.yaml:

hosts: [localhost]
port: 8182
serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0,
          config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] } }

Другой обходной путь - определить другой источник обхода в сценарии сервера Gremlin. Например, если вы используете conf/gremlin-server/gremlin-server.yaml по умолчанию, обновите глобальные привязки в scripts/empty-sample.groovy:

// define the default TraversalSource to bind queries to - named "g".
// define a subgraph traversal source - named "sg"
globals << [g : graph.traversal(),
    sg: graph.traversal().withStrategies(SubgraphStrategy.build().edges(
        __.has("field", "condition")).create())]

Затем вы можете использовать этот источник обхода из удаленного драйвера:

cluster = Cluster.open('conf/remote-objects.yaml')
graph = EmptyGraph.instance()
sg = graph.traversal().withRemote(DriverRemoteConnection.using(cluster, "sg"))
person Jason Plurad    schedule 09.07.2017