我正在尝试在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不是直截了当的:(或者也许是我。
干杯
答案 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控制台中试一试,并确保它对你有用,就像它在我这里一样。