当前位置: 首页 > 知识库问答 >
问题:

Neo4j关系模式索引

鄢博简
2023-03-14

使用Neo4j 2.1。4和SDN 3.2。0.1释放

我有一个图,它将节点与具有关联UUID的关系连接起来。外部系统使用UUID作为标识关系的源和目标的手段。在SpringDataNeo4j(SDN)中,我们有一个@RelationshipEntity(type=“LINKED_TO”)类,它有一个@StartNode@EndNode和一个字符串uuid字段。uuid字段是@索引,Neo4j中的结果模式定义显示为

neo4j-sh (?)$ SCHEMA
==> Indexes
...
==>   ON :Link(uuid) ONLINE
...

但是,对数据运行密码查询,例如。

MATCH ()-[r:LINKED_TO]->() WHERE uuid=’XXXXXX’ RETURN r;

对数据库进行全面扫描,需要很长时间

如果我试图通过运行来使用索引

MATCH ()-[r:LINKED_TO]->() USING INDEX r:Link(uuid) WHERE uuid=’XXXXXX’ RETURN r;

我明白了

SyntaxException: Type mismatch: expected Node but was Relationship.

据我所知,在Neo4j中,关系应该是一等公民,但是我不知道如何利用关系上的索引来防止数据库上的表扫描来定位关系。

我知道有些帖子,比如如何在Cypher中使用关系索引,也会问类似的问题,但这个链接是两个节点之间的关系。如果我将链接转换为一个节点,我们将创建一个节点来表示一种关系,当我们在图形数据库中工作时,这种关系似乎是错误的-我最终会得到()-[:xxx]-

链接附带了一个我想要使用的唯一共享密钥。模式输出表明该字段有索引——我就是不能使用它。

有人有什么建议吗?

非常感谢,,

戴夫


共有1个答案

郏经纬
2023-03-14

架构索引仅对节点可用。索引关系的唯一方法是使用旧索引或自动索引。需要在START子句中显式地使用遗留索引:

START r=relationship:my_index_name(uuid=<myuuid>)
RETURN r

我不确定如何将其与SDN结合使用。

附带说明:在图数据模型中,要求关系索引几乎总是表示做错了什么。所有在域中具有标识的东西都应该是节点。因此,如果一个关系需要一个uuid,也许这个关系指的是一个东西,因此应该转换成一个节点,它与前一个开始节点有入站关系,与前一个结束节点有出站关系。

 类似资料:
  • 我是一个新的4J新手,我有一个简单的CSV与来源和dest IPS。我想在具有相同标签的节点之间创建一个关系。 类似于…source_ip>>ALERTS>>dest_ip,或者相反。 ....

  • 快速浏览基本关系模式。 以下各部分使用的导入如下: from sqlalchemy import Table, Column, Integer, ForeignKey from sqlalchemy.orm import relationship from sqlalchemy.ext.declarative import declarative_base Base = declarative_

  • 我使用Spring数据Neo4J来定义不同人员之间的无向关系。下面提供了一个示例实体类。 如上所述,一个人有一个类型为“人”的朋友列表。该关系保持无方向,以确保如果一个人A是“Friend_With”的人B,那么人B也是“Friend_With”的人A。 下面提供了添加好友的代码 我已经添加了PersonB作为PersonA的朋友,所以理想情况下,这应该意味着 因为关系是无方向的 但当我在询问,在

  • 是否有任何方法可以使用Cypher仅可视化Neo4j中特定类型的关系(实际图形)?例如,考虑数据模型,其中节点可以有三种类型的关系,即QR、QL和RL。 假设两个节点之间具有所有三种类型的关系,并说我只想突出显示整个图中的QR关系。现在如果我运行 “匹配p=(n)-[r:QR]- 它确实以表格形式给我所需的结果。但是,可视化部分不是必需的。它显示了A和B之间的所有关系(oi61.tinypic.c

  • 指向自身/相互依赖的行的行 这是一种非常具体的情况,其中relationship()必须执行插入和第二次更新才能正确填充行(反之亦然,更新和删除才能在不违反外键约束的情况下进行删除)。这两个用例是: 一个表包含一个指向它自己的外键,并且一行将有一个指向它自己的主键的外键值。 两个表各自包含一个引用另一个表的外键,每个表中的一行引用另一个表。 例如:: user --------