JanusGraph无法将索引用于外部数据

时间:2019-11-20 12:13:30

标签: solr janusgraph

我知道自从泰坦时代出现Stack Overflow以来,这个问题已经问了很多,但是我仍然无法解决这个问题。每次使用JanusGraph运行查询时,都会收到警告WARN org.janusgraph.graphdb.transaction.StandardJanusGraphTx - Query requires iterating over all vertices [(code = LHR)]. For better performance, use indexes。我使用带有共享配置集的SolrCloud遵循JanusGraph文档here上的说明。我没有收到此警告,当我加载随JanusGraph安装一起提供的内部数据时,查询似乎正在启用索引。我所做的是我使用以下命令加载了here描述的GraphOfTheGodsFactory

graph = JanusGraphFactory.open('conf/janusgraph-cql-solr.properties')
GraphOfTheGodsFactory.load(graph)
g = graph.traversal()
g.E().has('place', geoWithin(Geoshape.circle(37.97, 23.72, 50)))

上面的最后一条命令返回:

==>e[5y0-6gw-9hx-6hc][8384-battled->8400]
==>e[5js-6gw-9hx-3ao][8384-battled->4272]

请注意,该命令没有返回警告For better performance, use indexes,并且我测试了如果我在不使用solr的情况下运行上面的最后一条命令,则会收到该警告,这意味着我可以在内部数据。但是,当我使用Practical Gremlin提供的外部数据时,无法使用索引,并且会收到警告。为了描述我所做的事情,我首先从air-routes-latest.graphml文件中加载了数据,并在下面运行了命令:

graph.tx().rollback()
mgmt=graph.openManagement()
idx=mgmt.buildIndex('airportIndex',Vertex.class)
iata = mgmt.getPropertyKey('code')
idx.addKey(iata).buildCompositeIndex()
mgmt.commit()
g.V().has('code','LHR')

上面的最后一条命令返回WARN org.janusgraph.graphdb.transaction.StandardJanusGraphTx - Query requires iterating over all vertices [(code = LHR)]. For better performance, use indexes

我使用JanusGraph 0.4.0,Solr 7.7.2和Cassandra 3.11.5。

编辑: 好的,现在可以了。 我所做的一切如下所示:

graph.tx().rollback()
mgmt=graph.openManagement()
idx=mgmt.buildIndex('airportIndex',Vertex.class)
iata = mgmt.getPropertyKey('code')
idx.addKey(iata).buildCompositeIndex()
mgmt.commit()
mgmt.awaitGraphIndexStatus(graph, 'airportIndex').status(SchemaStatus.REGISTERED).call()
mgmt = graph.openManagement()
mgmt.awaitGraphIndexStatus(graph, 'airportIndex').call()
mgmt.updateIndex(mgmt.getGraphIndex("airportIndex"), SchemaAction.REINDEX).get()
mgmt.commit()
g.V().has('code','LHR')

这将成功返回值,而不会发出警告。

0 个答案:

没有答案