当前位置: 代码迷 >> 综合 >> Neo4j 创建索引、删除索引、查询索引
  详细解决方案

Neo4j 创建索引、删除索引、查询索引

热度:24   发布时间:2023-12-26 13:07:47.0

1. 创建索引

给 Label 为 Person 的节点的 name 属性上创建索引,CQL语句如下所示:

CREATE INDEX ON :Person(name)

运行截图如下所示:

重复执行上述CQL语句,再次创建索引,不会报错,但是没有再创建索引。

2. 删除索引

删除刚才创建的索引,CQL语句如下所示:

DROP INDEX ON :Person(name)

运行截图如下所示:

删除成功后,再次删除索引会报错:Neo.DatabaseError.Schema.IndexDropFailed: Unable to drop index on :Person(name): No such INDEX ON :Person(name)。

3. 使用索引

索引创建完成后,在查询的时候会自动使用索引,列出一些CQL语句,这些语句在执行的时候会自己去调用索引。

MATCH (person:Person { name: 'Keanu Reeves' })
RETURN person
MATCH (person:Person)
WHERE person.name > 'A'
RETURN person
MATCH (person:Person)
WHERE person.name IN ['Keanu Reeves', 'Aaron Sorkin']
RETURN person
MATCH (person:Person)
WHERE person.name STARTS WITH 'A'
RETURN person
MATCH (p:Person)
WHERE exists(p.name)
RETURN p

4. 查询创建的索引

执行如下语句。

:schema

查询结果如图所示。

5. Neo4j 索引的底层实现

有人说是 es,全名应该是Elasticsearch,http://neo4j.com.cn/topic/5bbb00b5d8765793343141a3

上面讲是索引底层用的ES的是错误的,感谢 gq2016 的指教。

看了下Neo4j用户手册,Neo4j支持的是 B+树索引和全文索引。官方文档连接:https://neo4j.com/docs/operations-manual/current/performance/index-configuration/

B+树索引介绍:https://neo4j.com/docs/operations-manual/current/performance/index-configuration/#index-configuration-btree

全文索引介绍,使用的是 Apache Lucene:https://neo4j.com/docs/operations-manual/current/performance/index-configuration/#index-configuration-fulltext

  相关解决方案