首页 > 解决方案 > 没有索引值如何遍历?

问题描述

我有一个场景,我想查询获取所有没有特定属性键和值的顶点。所以,我尝试的是

g.V().hasLabel('Persona').hasNot('isTempDob').count()

导致

Could not find a suitable index to answer graph query and graph scans are disabled: [(~label = Persona)]:VERTEX

因此,我按照文档(例如获取标签名称为Persona的顶点数)尝试了更简单的方法。查询是

g.V('Persona').count()

导致

0

我不知道为什么没有任何索引值就无法遍历?任何帮助将不胜感激。在此先感谢。

标签: node.jsgremlinjanusgraph

解决方案


也许它只是一个错误类型但g.V('Persona').count()不搜索标签 - 它查找具有唯一标识符“Persona”的顶点。结果我怀疑“0”的答案是正确的。

我不知道为什么没有任何索引值就无法遍历?

JanusGraph(和其他图形系统)防止没有索引值的遍历作为护栏,以防止用户意外执行长时间运行的查询。如果您有一个只有数千个顶点的小图,那么您可能会发现此功能很烦人,但是当您有数十亿个顶点时,它可能是一个很好的帮手,因为您在那里编写的查询将花费数小时和数小时完成并且不会是获得该答案的推荐方法。如果您正在对图中的所有顶点进行全局扫描,那么您应该在 Spark 上执行 Gremlin 以享受它的并行处理能力,将这些小时和数小时变成几分钟。

回到小图的情况,您可以通过配置 JanusGraph 来暂时禁用护栏,query.force-index=false以允许查询执行。这应该允许您的查询在没有该错误/警告的情况下工作。


推荐阅读