如何找到Neo4J索引键';在使用Spring数据的节点上创建的索引的?

如何找到Neo4J索引键';在使用Spring数据的节点上创建的索引的?,neo4j,spring-data-neo4j,Neo4j,Spring Data Neo4j,我已经使用Spring创建了节点,使用了以下基本过程(见下文)。我的概念有一个POJO,使用这个对象和一个Neo4J模板创建带有索引的节点。我仍然无法发现所创建索引的“键”是什么。我知道索引的名称是'CID',但假设'KEY'是'conceptId'。但是,当我使用以下查询(见下文)时,不会返回任何数据。已确认该索引确实存在,但我无法找出所述索引的正确“键”,因此我可以利用它来提高查询性能。我能够使用WHERE子句查询指定的节点,搜索所述节点的属性的特定值。但是,当我尝试使用索引“CID”和键“

我已经使用Spring创建了节点,使用了以下基本过程(见下文)。我的概念有一个POJO,使用这个对象和一个Neo4J模板创建带有索引的节点。我仍然无法发现所创建索引的“键”是什么。我知道索引的名称是'CID',但假设'KEY'是'conceptId'。但是,当我使用以下查询(见下文)时,不会返回任何数据。已确认该索引确实存在,但我无法找出所述索引的正确“键”,因此我可以利用它来提高查询性能。我能够使用WHERE子句查询指定的节点,搜索所述节点的属性的特定值。但是,当我尝试使用索引“CID”和键“conceptId”查找节点时,不会返回任何节点

// Concept POJO

    @NodeEntity
    public class Concept {

    @GraphId
    private Long nodeId;
    @Indexed(indexName="CID", fieldName="conceptId")
    private Long conceptId;

代码的内容比所显示的要多,但这为您提供了如何在Neo4J数据库中创建具有索引的节点的基本要点。有更多的属性和更多的索引。当使用Spring检索节点时,它似乎“自动”使用(我假设它正在使用索引)创建的索引,因为它返回结果的速度比使用Neo4J数据浏览器快

任何帮助都将不胜感激。
谢谢

您能否使用存储库方法从索引中检索节点,即
conceptRepository.findByPropertyValue
等?我不记得在注释字段以进行索引时指定了
fieldName
,您是否尝试过在注释中不使用参数(或者:您是否有一个最小的索引设置可以工作)?是的,我可以使用精确的方法访问节点。只有直接使用cypher,我才能使用索引访问节点。我已经尝试了两种方法,一种是声明字段名,另一种是不声明字段名。同样的结果。我确实发现fieldName对于我的最终目标不是必需的。谢谢哦,您可能在查询数值索引以获取
字符串
值吗?刚刚注意到索引字段是一个
长的
。如果在值周围加上引号(事实上,就像查询中的
WHERE
子句中那样,确实有效)…不,我尝试了几种不同的方法。它实际上发送了一个错误,而不是返回0行。使用引号返回0行,但应该返回一行。嗯。没有引号会出现什么错误?一些想法:1)我认为不可能从一个节点检索关于它如何被索引的信息(可能会随着2.0标签和新的索引而改变)。2) 正如您所说,索引键应该是字段名。3) 注释中的索引应该是数值型的
numeric=false
参数(因为您在上次查询中找到了它,所以属性是数值型的,索引值也应该是数值型的)。4) 您可以尝试在SDN在索引中查找的地方使用断点进行调试,并查看它是如何完成的吗?
// service where code to create Concept Nodes exists

    @Repository
    public class ConceptService {

    @Autowired
    private Neo4jTemplate n4jTemplate;
    @Autowired
    private ConceptRepository cr;

// Call to create node in a 'service'

     public void addConceptNode(Concept concept) {

             concept = n4jTemplate.save(concept);
    }
//Cypher Queries used to retrieve nodes using index
START a=node:CID( conceptId = "66573009")
RETURN a;
// this returns 0 nodes quickly

START a=node:CID( conceptid = "66573009")
RETURN a;
// this returns 0 nodes quickly

START a=node:CID( CID = "66573009")
RETURN a;
// this returns 0 nodes quickly

START a=node:CID( cid = "66573009")
RETURN a;
// this returns 0 nodes quickly

START a=node:CID( CONCEPTID = "66573009")
RETURN a;
// this returns 0 nodes quickly

// Cypher query not using index to retrieve same node
START a=node(*)
WHERE HAS(a.conceptId) AND a.conceptId = 66573009
RETURN a;
// this returns 1 node in 77365ms

//'quickly' = approx.(43-87ms).