1

我正在尝试获取与其他人具有相同地址且人数在 3 到 5 之间的数据税图中的人员列表。这是查询:

g.V().hasLabel('person').match(__.as('p').out('has_address').as('a').dedup().count().as('nr'),__.as('p').out('has_address').as('a')).select('nr').is(inside(3,5)).select('p','a','nr').range(0,20)

在第一次运行时,我注意到此错误消息:

找不到索引来回答查询子句并且 graph.allow_scan 被禁用:((label = person))

我启用了 graph.allow_scan=true 现在它正在工作

我想知道如何在不启用 allow_scan=true 的情况下创建能够运行此查询的索引?

谢谢

4

2 回答 2

1

您可以使用如下命令将索引添加到架构中来创建索引:

schema.vertexLabel('person').index('address').materialized().by('has_address').add()

此处提供有关添加索引的完整文档:https ://docs.datastax.com/en/latest-dse/datastax_enterprise/graph/using/createIndexes.html

您不应该启用 graph.allow_scan=true ,因为它在 CQL 查询上打开了 ALLOW FILTERING。这将导致大量集群扫描,并且不可避免地会因系统中的任何实际数据量而超时。您永远不应在任何类型的生产环境中启用此功能。

于 2017-03-28T22:42:35.987 回答
0

我不确定索引是否可以解决您的问题。做到这一点的最好方法是将地址具体化为节点并寻找入度在 3 到 5 之间的节点。

您可以在地址节点的文本字段上使用索引。

于 2017-02-23T10:33:35.297 回答