我有这个titan db schema:
val mgmt = getManagementSystem
val guid = mgmt.makePropertyKey("guid").dataType(classOf[String]).make()
mgmt.buildIndex("byGuid",classOf[Vertex]).addKey(guid).unique().buildCompositeIndex()
mgmt.commit()
mgmt.makePropertyKey("foo").dataType(classOf[String]).make()
mgmt.makePropertyKey("fo2").dataType(classOf[String]).make()
mgmt.makePropertyKey("about").dataType(classOf[String]).make()
/**
foo foo foo
*//
mgmt.commit()
当我尝试这样做时:
db.V.has("guid", guid).next()
然后在Debug中就是这条消息:
[warn] c.t.t.g.t.StandardTitanTx - Query requires iterating over all vertices [()]. For better performance, use indexes
我使用了泰坦文档,所有内容都像文档一样设置。我不知道出了什么问题,请帮忙。 THX。
答案 0 :(得分:0)
您必须等待复合索引从INSTALLED
切换到ENABLED
状态。
要执行此操作,请将代码更改为
// Create an index
m = graph.openManagement()
m.buildIndex('names', Vertex.class).addKey(m.getPropertyKey('name')).buildCompositeIndex()
m.commit()
graph.tx().commit()
// Block until the SchemaStatus transitions from INSTALLED to REGISTERED
ManagementSystem.awaitGraphIndexStatus(graph, 'names').status(SchemaStatus.REGISTERED).call()
// Reindex using TitanManagement
m = graph.openManagement()
i = m.getGraphIndex('names')
m.updateIndex(i, SchemaAction.REINDEX)
m.commit()
// Enable the index
ManagementSystem.awaitGraphIndexStatus(graph, 'names').status(SchemaStatus.ENABLED).call()
有关详细信息,请查看here