2016-07-07 17 views
0

Ich habe eine Titan-Datenbank mit Cassandra Storage-Backend, und ich versuche, einen gemischten Index basierend auf zwei Eigenschaftsschlüssel zu erstellen.Elasticsearch Indizierung ist sehr langsam

Ich kann den Index mit folgenden Kommandos registrieren:

graph=TitanFactory.open(config); 
graph.tx().rollback() 

m = graph.openManagement(); 
m.buildIndex("titleBodyMixed", Vertex.class).addKey(m.getPropertyKey("title")).addKey(m.getPropertyKey("body")).buildMixedIndex("search"); 
m.commit(); 

m.awaitGraphIndexStatus(graph, 'titleBodyMixed').status(SchemaStatus.REGISTERED).timeout(3, java.time.temporal.ChronoUnit.MINUTES).call(); 

Und wenn ich überprüft, wird der Index nach wenigen Sekunden erfolgreich registriert. Im nächsten Schritt, ich versuche, die Datenbank mit den folgenden Befehlen indizieren:

m = graph.openManagement(); 
m.updateIndex(m.getGraphIndex('titleBodyMixed'), SchemaAction.REINDEX).get(); 

ist jedoch UPDATE Befehl nicht Finishing, (nach 12 Stunden).

Ich habe etwa 300k Dateneingabe in der Datenbank und jeder Dateneintrag hat einen Titel und einen Körper zu indizieren.

Meine Frage ist, wie kann ich die Indizierung beschleunigen?

Wenn ich oben Befehl verwende ich sehe, dass meine CPU durch Indexierungsprozesse nicht gesättigt ist:

enter image description here

Datei My Titan Config wie unten ist:

config =new BaseConfiguration(); 
config.setProperty("storage.backend","cassandra"); 
config.setProperty("storage.hostname", "127.0.0.1"); 
config.setProperty("storage.cassandra.keyspace", "smartgraph"); 
config.setProperty("index.search.elasticsearch.interface", "NODE"); 
config.setProperty("index.search.backend", "elasticsearch"); 

Hier finden Sie zeigen elasticsearch service Eigenschaften:

curl -X GET 'http://localhost:9200' 
{ 
    "status" : 200, 
    "name" : "Ms. Marvel", 
    "cluster_name" : "elasticsearch", 
    "version" : { 
    "number" : "1.7.2", 
    "build_hash" : "e43676b1385b8125d647f593f7202acbd816e8ec", 
    "build_timestamp" : "2015-09-14T09:49:53Z", 
    "build_snapshot" : false, 
    "lucene_version" : "4.10.4" 
    }, 
    "tagline" : "You Know, for Search" 
} 

Antwort

0

Die Idee ist, der Index Reindexing-Prozess wird nicht gestartet, wenn alle Sitzungen geschlossen sind. Wahrscheinlich haben Sie Sitzungen mit der Datenbank geöffnet. Daher wird der Neuindexjob nie ausgelöst.

Mit this Gremlin script können Sie alle Sitzungen schließen. Sie sollten sehen, dass die Indizierung anschließend stattfindet.

Wird das helfen?