通过ES索引顶点属性的Titan顺序?

时间:2013-12-18 21:53:39

标签: titan

根据最新的Titan 0.4.1 docs,此代码应该可以在结果集中对顶点进行排序:

graph.query().has("name",CONTAINS,"john").orderBy("age",Order.DESC).limit(10).vertices()

我想在一组可能很大的顶点上执行这种类型的查询,因此希望对其进行索引。文档建议:

  

大多数外部索引后端支持本机排序和   有效率的。但是,orderBy方法中使用的属性键必须   被配置为在此索引后端中为原始结果编制索引   订购支持。这在orderBy键的情况下很重要   与查询键不同。如果属性键未编入索引,   然后排序需要将所有结果加载到内存中。

特别是对于Elasticsearch后端,我们如何创建支持此orderBy方法的索引?

是否有一个简单的第3个参数传递给KeyMaker的{​​{3}}方法,可能是indexed下面示例的扩展?

graph.makeKey("age").dataType(Integer.class).indexed("search", Vertex.class).make();

1 个答案:

答案 0 :(得分:2)

您只需要在ES中索引属性(与任何其他属性一样)。

在Titan中索引(错误; orderBy不会被优化):

graph.makeKey("age").dataType(Integer.class).indexed(Vertex.class).make();

在ES中索引(正确; ES中的原生结果排序):

graph.makeKey("age").dataType(Integer.class).indexed("search", Vertex.class).make();

Cheeers, 丹尼尔