如何使用Java 1.8在Neo4j v3.3.1中创建复合索引?
我将以下内容用于单个属性graphDb.schema().indexFor(label).on(indexProperty).create();
。
文档说:
注意:目前每个索引只支持一个属性键。
所以我假设复合索引有不同的API?
答案 0 :(得分:0)
目前尚未以编程方式支持此功能。您必须执行密码查询才能创建索引。
修改
假设"任何可用于Cypher的东西都可以通过Java API以某种形式或方式完成:":
是和否。在Java方面,有内部Kernel API和公共Core API。
通过内核API支持Cypher所做的任何事情,但不保证在版本之间保持不变,因此在升级时可能需要花费更多时间进行维护。您还需要在neo4j.conf中使用内核API来授权procs。更重要的是,这通常不是用户友好的,有时不是非常开发人员友好。我可以尝试获取更多细节,但我的理解是这是一件相当复杂的事情。
核心API是嵌入式Neo4j和程序的推荐API,通常更加用户友好,并且在修补程序/次要/主要版本(作为公共API)允许或限制的更改方面有更多保证,但是在某些方面,它没有涵盖内核API的所有功能或通过Cypher公开的功能。目前,缺少的功能包括节点键约束和复合索引。
此处的解决方法和建议方法是使用db.execute()
来执行具有复合索引或节点键约束创建(或删除)的密码查询。这也是APOC在apoc.schema.assert()
程序中使用的方法。请参阅this snippet of code,看起来像您可以自行重复使用的内容。