【问题标题】:Titan db how to list all graph indexesTitan db如何列出所有图索引
【发布时间】:2014-10-31 09:15:59
【问题描述】:

我一直在研究管理系统,但有些事情仍然让我难以理解。基本上我想做的是:

  • 列出所有基于边缘的索引(包括以顶点为中心)。
  • 列出所有基于顶点的索引(如果索引附加到标签,则基于每个标签)。

这基本上就像绘制图形模式。

我已经尝试了一些方法,但我最多只能获得部分数据。

g.getIndexdKeys(<Vertex or Edge>); 
//basic information. Doesn't seem to return any buildEdgeIndex() based indexes

mgmt.getVertexLabels(); 
// gets labels, can't find a way of getting indexes attached to these labels.

mgmt.getGraphIndexes(Vertex.class); 
// works nicely I can retrieve Vertex indexes and get pretty much any 
// information I want out of them except for information regarding 
// indexOnly(label). So I can't tell what label these indexes are attached to.

mgmt.getGraphIndexes(Edge.class); 
// doesn't seem to return any buildEdgeIndex() indexes.

任何填补空白的帮助都会有所帮助。

我想知道:

  • 如何通过 indexOnly() 找到附加到标签(或附加到索引的标签)的索引
  • 如何列出通过 buildEdgeIndex() 设置的边缘索引及其各自的边缘标签?

提前致谢。

额外信息: Titan 0.5.0,Cassandra 后端,来自 rexster。

【问题讨论】:

    标签: gremlin titan tinkerpop


    【解决方案1】:

    这不是很直接,因此我将使用一个示例来展示它。

    让我们从众神图 + 一个额外的神名索引开始:

    g = TitanFactory.open("conf/titan-cassandra-es.properties")
    GraphOfTheGodsFactory.load(g)
    m = g.getManagementSystem()
    name = m.getPropertyKey("name")
    god = m.getVertexLabel("god")
    m.buildIndex("god-name", Vertex.class).addKey(name).unique().indexOnly(god).buildCompositeIndex()
    m.commit()
    

    现在让我们再次拉出索引信息。

    gremlin> m = g.getManagementSystem()
    ==>com.thinkaurelius.titan.graphdb.database.management.ManagementSystem@2f414e82
    
    gremlin> // get the index by its name
    gremlin> index = m.getGraphIndex("god-name")
    ==>com.thinkaurelius.titan.graphdb.database.management.TitanGraphIndexWrapper@e4f5395
    
    gremlin> // determine which properties are covered by this index
    gremlin> gn.getFieldKeys()
    ==>name
    
    //
    // the following part shows what you're looking for
    //
    gremlin> import static com.thinkaurelius.titan.graphdb.types.TypeDefinitionCategory.*
    
    gremlin> // get the schema vertex for the index
    gremlin> sv = m.getSchemaVertex(index)
    ==>god-name
    
    gremlin> // get index constraints
    gremlin> rel = sv.getRelated(INDEX_SCHEMA_CONSTRAINT, Direction.OUT)
    ==>com.thinkaurelius.titan.graphdb.types.SchemaSource$Entry@5162bf3
    
    gremlin> // get the first constraint; no need to do a .hasNext() check in this
    gremlin> // example, since we know that we will only get a single entry
    gremlin> sse = rel.iterator().next()
    ==>com.thinkaurelius.titan.graphdb.types.SchemaSource$Entry@5162bf3
    
    gremlin> // finally get the schema type (that's the vertex label that's used in .indexOnly())
    gremlin> sse.getSchemaType()
    ==>god
    

    干杯, 丹尼尔

    【讨论】:

    • 非常感谢!我已经想出了其中的一部分,但缺少获取顶点标签。
    猜你喜欢
    • 2015-10-01
    • 2017-03-27
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 2017-10-11
    • 1970-01-01
    相关资源
    最近更新 更多