2016-06-18 9 views
2

hinzufügen wollte ich einen Mischindex in Titan schaffen, damit ich diese Gremlin-BefehleUnable Mischindex in Titan

verwendet
graph.tx().rollback() 
mgmt.buildIndex('deviceIndex',Vertex.class).addKey(serialNumber,Mapping.STRING.asParameter()).addKey(manufacturer,Mapping.STRING.asParameter()).addKey(clas,Mapping.STRING.asParameter()).addKey(description,Mapping.TEXT.asParameter()).addKey(fw_version,Mapping.STRING.asParameter()).addKey(hw_version,Mapping.STRING.asParameter()).addKey(latitude).addKey(longitude).addKey(accuracy).addKey(measure_datetime).buildMixedIndex("search") 
mgmt.commit() 
mgmt.awaitGraphIndexStatus(graph, 'deviceIndex').call() 

, was ich als Ausgabe zu erhalten ist:

GraphIndexStatusReport [success = false , indexName = 'deviceIndex', targetStatus = REGISTERED, notConverged = {device_longitude = AKTIVIERT, device_latitude = AKTIVIERT, device_description = AKTIVIERT, device_class = AKTIVIERT, device_serial_number = AKTIVIERT, device_fw_version = AKTIVIERT, gerätegenauigkeit = AKTIVIERT, geräte_hw_version = AKTIVIERT, geräte_hersteller = AKTIVIERT, measure_datetime = ENABLED}, konvergiert = {}, verlauft ed = PT1M0.234S]

Können Sie mir sagen, warum gibt es eine success=false in der Ausgabe. Warum schlägt die Abfrage fehl?

=> bearbeiten

benutzte ich g.V().has('device_latitude', (float)343.2435).toList() und es hat nicht geben mir keine Warnung, dass ganze Graph überquert wird. Aber ich kann nicht die Suche von Elasticsearch dh

GET http://localhost:9200/_search?pretty 

Ergebnisse in

{ 
    "took" : 2, 
    "timed_out" : false, 
    "_shards" : { 
    "total" : 5, 
    "successful" : 5, 
    "failed" : 0 
    }, 
    "hits" : { 
    "total" : 0, 
    "max_score" : null, 
    "hits" : [ ] 
    } 
} 
+0

Haben Sie den Index überprüft, um zu sehen, ob es funktioniert oder nicht? Haben Sie versucht, graph.tx(). Commit() nach mgmt.commit() zu verwenden? –

Antwort

2

Entsprechend dem Ergebnis, so scheint es, dass die „deviceIndex“ registriert ist, aber noch nicht aktiviert. Sie können versuchen zu sehen, dass der folgende Code Ihr Problem lösen kann oder nicht?

graph.tx().rollback() 
mgmt.buildIndex('deviceIndex',Vertex.class).addKey(serialNumber,Mapping.STRING.asParameter()).addKey(manufacturer,Mapping.STRING.asParameter()).addKey(clas,Mapping.STRING.asParameter()).addKey(description,Mapping.TEXT.asParameter()).addKey(fw_version,Mapping.STRING.asParameter()).addKey(hw_version,Mapping.STRING.asParameter()).addKey(latitude).addKey(longitude).addKey(accuracy).addKey(measure_datetime).buildMixedIndex("search") 
mgmt.commit() 
graph.tx().commit() 
ManagementSystem.awaitGraphIndexStatus(graph, 'deviceIndex').status(SchemaStatus.ENABLED).call() 

Manchmal speziell in einem entfernten Datenspeicher (über Netzwerk mit hohen Latenz) dauert es Zeit für den Index sofort aktiviert werden, für den Index warten aktiviert werden, kann Ihren Fall helfen.

+0

Danke! Es funktioniert! Können Sie mir sagen, warum 'deviceIndex' möglicherweise nicht automatisch aktiviert wird? da es keinen Hinweis darauf gibt, einen Index in titan zu aktivieren [s3.thinkaurelius.com/docs/titan/1.0.0/indexes.html](http://s3.thinkaurelius.com/docs/titan/1.0.0/indexes .html) – freeza

+0

@freeza Index wird automatisch aktiviert, wenn kein Problem auftritt, um dies zu vermeiden. Es kann jedoch einige Zeit dauern. –