Gremlin 找到具有给定值的 "any" 属性 的所有顶点

Gremlin find all vertices that have "any" property with a given value

我图表中的属性是动态的。这意味着,顶点上可以有任意数量的属性。这也意味着,当我进行搜索时,我不知道要查找什么 属性 值。是否有可能在 gremlin 中查询图形以查找具有任何 属性 和给定值的所有顶点。

例如,使用 namedesc 作为属性。如果传入的搜索请求是 'test',查询将是 g.V().has('name', 'test').or().has('desc', 'test')。当我不知道存在哪些属性时,如何实现类似的功能?我需要能够搜索所有属性并检查这些属性的值是否为 'test'

您可以使用以下语法执行此操作:

g.V().properties().hasValue('test')

但是,对于任何大小的数据集,我都认为这是一个非常慢的遍历执行,因为它等同于询问 RDBMS“在任何 table 的任何列中找到任何单元格,其中值等于 'test'”。如果这是一个高频请求,我建议考虑重构图形模型或使用针对搜索优化的数据库,例如 Elasticsearch。