GraphOfTheGodsFactory和Gremlin查询

时间:2014-06-11 14:57:44

标签: graph-databases gremlin titan

我正在尝试在java中给出here的查询:

import static com.tinkerpop.blueprints.Compare

Graph g = GraphOfTheGodsFactory.create("gods")
g.query().has("age", GREATER_THAN, 1000).vertices().iterator().hasNext

但是这似乎返回false,尽管下面的一个返回true但没有从索引中获益:

new GremlinPipeline(g.getVertices()).has("age", GREATER_THAN, 1000).toList().size() > 0 

the example 5 here适用于某人吗?

这是我为测试而创建的项目:https://github.com/joan38/TestTitan 这应该打印出已有1000多年历史的神的名字,但事实并非如此。

我真的感觉TinkerPop或Titan不是直截了当的:(或者也许是我。

干杯

2 个答案:

答案 0 :(得分:1)

这是一个ElasticSearch的陷阱。问题是你的代码运行得太快了。 ES的默认刷新间隔为1秒。在使用嵌入式ES时,我不知道任何配置此间隔的方法,因此您所要做的就是:在代码之间添加Thread.sleep(1000)以加载图表和查询数据的代码。

答案 1 :(得分:0)

不确定为什么它不会为您返回true。请参阅我的Titan控制台会话:

gremlin> g = GraphOfTheGodsFactory.create("gods")
==>titangraph[local:gods]
gremlin> g.query().has("age", GREATER_THAN, 1000).vertices().iterator().hasNext()
==>true

更进一步:

gremlin> g.query().has("age", GREATER_THAN, 1000).vertices()
==>v[20]
==>v[4]
==>v[16]
==>v[32]
gremlin> g.query().has("age", GREATER_THAN, 1000).vertices()._().age
==>4500
==>10000
==>5000
==>4000
gremlin> g.query().has("age", GREATER_THAN, 1000).has('name','saturn').vertices()._().map
==>{name=saturn, type=titan, age=10000}
gremlin> new GremlinPipeline(g.getVertices()).has("age", GREATER_THAN, 1000).toList().size()
==>4

或许可以在Titan控制台中试一试,并确保它对你有用,就像它在我这里一样。