有没有办法用 PartitionStrategy 执行文本 gremlin 查询

Is there a way to execute text gremlin query with PartitionStrategy

我正在寻找 运行 文本查询的实现,例如:“g.V().limit(1).toList()”,同时在 Apache TinkerPop 中使用 PatitionStrategy。

我正在尝试构建一个 REST 接口以仅对选定的图形分区进行 运行 查询。我知道如何使用客户端 运行 原始查询,但我正在寻找一种实现,我可以在其中创建多租户图 (https://tinkerpop.apache.org/docs/current/reference/#partitionstrategy) 并使用原始文本查询仅查询选定的租户而不是一个GLV。我只能使用 pythongremlin 查询选定的分区,但是我找不到 运行 租户文本查询的参考实现。 这是租户查询实现

connection = DriverRemoteConnection('ws://megamind-ws:8182/gremlin', 'g')
g = traversal().withRemote(connection)
partition = PartitionStrategy(partition_key="partition_key",
                          write_partition="tenant_a",
                          read_partitions=["tenant_a"])
partitioned_g = g.withStrategies(partition)
x = partitioned_g.V.limit(1).next() <---- query on partition only 

下面是我如何在整个图表上执行原始查询,但我正在寻找 运行 仅在选定分区上基于文本的查询的实现。

from gremlin_python.driver import client

client = client.Client('ws://megamind-ws:8182/gremlin', 'g')


results = client.submitAsync("g.V().limit(1).toList()").result().one() <-- runs on entire graph.
print(results)
client.close()

有什么建议吗? TIA

这取决于后端存储如何处理文本模式查询,但对于查询本身,本质上您只需要使用 Groovy/Java 样式公式即可。这将适用于 GremlinServer 和 Amazon Neptune。对于其他后端,您需要确保支持此语法。所以从 Python 你会使用类似的东西:

client.submit('
  g.withStrategies(new PartitionStrategy(partitionKey: "_partition", 
                                         writePartition: "b", 
                                         readPartitions: ["b"])).V().count()')