Code的综合指数

时间:2018-02-15 01:15:02

标签: java neo4j

如何使用Java 1.8在Neo4j v3.3.1中创建复合索引?

我将以下内容用于单个属性graphDb.schema().indexFor(label).on(indexProperty).create();

文档说:

  

注意:目前每个索引只支持一个属性键。

所以我假设复合索引有不同的API?

1 个答案:

答案 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,看起来像您可以自行重复使用的内容。