如何在Java中按属性检索Neo4关系?

如何在Java中按属性检索Neo4关系?,java,neo4j,graphaware,Java,Neo4j,Graphaware,我正在开发一个Neo4j插件,需要通过属性值检索关系 我可以访问Neo4j,它有一个非常方便的方法GraphDatabaseService.findNode(标签、字符串属性、字符串值) 我正在寻找此方法的关系对应项,类似于GraphDatabaseService.findRelationship(RelationshipType类型、字符串属性、字符串值) 这是否存在?它在路线图上吗?还有别的办法吗 目前只有节点支持模式索引 在没有周围节点上下文的情况下,通过值查找关系的用例是什么 您可以通过

我正在开发一个Neo4j插件,需要通过属性值检索关系

我可以访问Neo4j,它有一个非常方便的方法
GraphDatabaseService.findNode(标签、字符串属性、字符串值)

我正在寻找此方法的关系对应项,类似于
GraphDatabaseService.findRelationship(RelationshipType类型、字符串属性、字符串值)


这是否存在?它在路线图上吗?还有别的办法吗

目前只有节点支持模式索引

在没有周围节点上下文的情况下,通过值查找关系的用例是什么


您可以通过JavaAPI访问关系的手动索引,这非常好,因为您既可以通过属性,也可以在其任何一个终端节点的上下文中访问。如果您为每个rel类型创建一个索引,那么对于具有许多关系的节点来说,也可以通过传入开始或结束节点来过滤一些关系。 这就是我在APOC过程库中添加的支持

但您必须手动将关系添加到该索引中。

总结Michael和Christophe的答案:

  • 未实现通过属性值和架构索引查找关系
  • 可以使用手动索引按属性查找关系
  • 只对UUID执行此操作(使用手动索引)
要通过UUID获取关系,请执行以下代码:

public Relationship getRelByUuid(GraphDatabaseService database, String uuid) {
    UuidReader reader = new DefaultUuidReader(
        getStartedRuntime(database).getModule(UuidModule.class).getConfiguration(),
        database
    );
    return database.getRelationshipById(uuidReader.getRelationshipIdByUuid(uuid));
}

这不存在,也不在路线图上,唯一的方法是使用Lucene索引来索引属性值。你可以看看graphaware uuid,看看我们是如何处理关系uuid的。现在只有节点支持模式索引,在没有节点上下文的情况下,通过值查找关系的用例是什么?你可以通过Java API访问关系的手动索引,这很好,因为你们都可以通过属性找到rel,也可以在它们的任意一个终端节点的上下文中找到rel。谢谢你们,Michael!我的用例是neo4j到elasticsearch插件。我正在添加对关系索引的支持,并希望通过UUID检索关系(当关系匹配ES中的搜索查询时)。根据Christophe的回答,我想我只需要从ElasticSearch插件访问UUID插件,我会很好:)