Ich benutze Titan 1.0.0 mit Cassandra Backend und elasticsearch als Index. Ich habe Benutzerscheitelpunkte mit konfigurierten Eigenschaften (userId, email, fullName ... usw.). Einige dieser Eigenschaften sind in elasticsearch als gemischter Index konfiguriert. Jetzt möchte ich eine existierte Eigenschaft hinzufügen (zB eine zuvor konfigurierten Eigenschaft, die nicht zuvor in der gemischten Index aufgenommen wurde) an den Mischindex mit:Title 1.0.0 Mixed Index kann nicht neu indiziert werden, nachdem eine existierende Eigenschaft hinzugefügt wurde
TitanManagement tm = graph.openManagement();
tm.addIndexKey(tm.getGraphIndex("users"), tm.getPropertyKey("age"));
tm.commit();
Von nun zusätzlich „Alter“ Immobilien-Mapping ist Hinzugefügt zum Elasticsearch. Jedes Update der "Alter" Eigenschaft eines Benutzerscheitelpunktes fügt ein "Alter" Feld zu dem Elasticserch-Dokument hinzu. Um diesen Index jedoch korrekt in Titan-Abfragen zu verwenden, muss ich meinen gemischten Graph-Index neu indizieren. An diesem Punkt beginnt mein Problem. Bezogen auf Titan Dokumentation, muss ich die folgenden Schritte tun (mit Gremlin):
import com.thinkaurelius.titan.graphdb.database.management.ManagementSystem
// Rollback or commit transactions on the graph which predate the index definition
graph.tx().rollback()
// Block until the SchemaStatus transitions from INSTALLED to REGISTERED
ManagementSystem.awaitGraphIndexStatus(graph, "users")
.status(SchemaStatus.REGISTERED)
.timeout(10, ChronoUnit.MINUTES) // set timeout to 10
.call()
Nach 10 Minuten Timeout die Antwort, die empfangen wurde:
==>GraphIndexStatusReport[success=false, indexName='users', targetStatus=REGISTERED,
notConverged={age=INSTALLED, fullName=ENABLED, userId=ENABLED,
userRegisterDate=ENABLED, userGender=ENABLED, email=ENABLED},
converged={}, elapsed=PT10M0.173S]
Und jetzt, wenn ich versuche, so indizieren folgt:
WARN com.thinkaurelius.titan.graphdb.olap.job.IndexRepairJob - Index users has key age in an invalid status INSTALLED
ERROR com.thinkaurelius.titan.diskstorage.keycolumnvalue.scan.StandardScannerExecutor - Exception trying to setup the job:
com.thinkaurelius.titan.core.TitanException: The index users is in an invalid state and cannot be indexed. The following index keys have invalid status: age has status INSTALLED (status must be one of [REGISTERED, ENABLED])
:
tm = graph.openManagement()
tm.updateIndex(tm.getGraphIndex("users"), SchemaAction.REINDEX).get()
tm.commit()
ich den Fehler
erhalten 210Irgendwelche Ideen, was ich falsch mache?
Können Sie versuchen, den Aufruf von '.get()' nach 'tm.updateIndex (tm.getGraphIndex (" users "), SchemaAction.REINDEX) zu ketten? Sie haben diesen Teil aus dem Beispiel in der Dokumentation verpasst. – jbmusso
@jbmusso ja, habe ich versucht mit '.get()' Methodenaufruf. Einfach kopieren/einfügen, meine Fragen bearbeiten. – OctopusSD