Pensez à le node-id comme un détail de l'implémentation (comme le rowid de bases de données relationnelles, peut être utilisé pour identifier les nœuds, mais ne doit pas être invoqué pour ne jamais être réutilisé).
Vous ajoutez votre des clés naturelles comme des propriétés du nœud, puis l'indice de nœuds avec la clé naturelle (ou activer la fonction d'auto-indexation pour eux).
E..g dans l'API Java:
Index<Node> idIndex = db.index().forNodes("identifiers");
Node n = db.createNode();
n.setProperty("id", "my-natural-key");
idIndex.add(n, "id",n.getProperty("id"));
// later
Node n = idIndex.get("id","my-natural-key").getSingle(); // node or null
Avec l'auto-indexation vous devez activer l'auto-indexation pour votre champ "id".
// via configuration
GraphDatabaseService db = new EmbeddedGraphDatabase("path/to/db",
MapUtils.stringMap(
Config.NODE_KEYS_INDEXABLE, "id", Config.NODE_AUTO_INDEXING, "true" ));
// programmatic (not persistent)
db.index().getNodeAutoIndexer().startAutoIndexingProperty( "id" );
// Nodes with property "id" will be automatically indexed at tx-commit
Node n = db.createNode();
n.setProperty("id", "my-natural-key");
// Usage
ReadableIndex<Node> autoIndex = db.index().getNodeAutoIndexer().getAutoIndex();
Node n = autoIndex.get("id","my-natural-key").getSingle();
Voir: http://docs.neo4j.org/chunked/milestone/auto-indexing.html
Et: http://docs.neo4j.org/chunked/milestone/indexing.html