如何以幂等方式创建Neo4j全文索引?

如何以幂等方式创建Neo4j全文索引?,neo4j,neo4j-apoc,Neo4j,Neo4j Apoc,我有一些集成测试套件,它们运行一个Cypher init脚本,我希望所有的操作都是幂等的 运行CALL db.index.fulltext.createNodeIndex(“用户名”、[“用户”]、[“用户名”])第一次运行正常,但在后续尝试中失败 我试过: CALL apoc.do.when( apoc.schema.node.indexExists("User", ["username"]), 'RETURN NULL', 'CALL

我有一些集成测试套件,它们运行一个Cypher init脚本,我希望所有的操作都是幂等的

运行
CALL db.index.fulltext.createNodeIndex(“用户名”、[“用户”]、[“用户名”])
第一次运行正常,但在后续尝试中失败

我试过:

CALL apoc.do.when(
  apoc.schema.node.indexExists("User", ["username"]), 
  'RETURN NULL', 
  'CALL db.index.fulltext.createNodeIndex("usernames", ["User"], ["username"])'
)
这导致:

Failed to invoke procedure `apoc.do.when`: Caused by: org.neo4j.graphdb.security.AuthorizationViolationException: Schema operations are not allowed for user 'neo4j' with roles [PUBLIC, admin] overridden by TOKEN_WRITE overridden by TOKEN_WRITE.
如何通过全文索引实现这一点


这是在Neo4j 4.2.1中,您不能运行密码查询来删除/创建索引。但您可以通过以下两个步骤删除/创建它

CALL db.index.fulltext.drop("usernames")  ;
CALL db.index.fulltext.createNodeIndex("usernames", ["User"], ["username"]) ;

谢谢,但问题不是要删除索引。我只想确保在索引不存在的情况下创建索引。好了,Cypher query将无法做到这一点,您可以向Neo4j提交请求以添加该功能。