Titan:基于edge数据类型的弹性搜索排序

时间:2014-05-19 13:48:00

标签: titan

我有以下java客户端ElasticSearch代码

SearchResponse response = client.prepareSearch("titan")
.setTypes("vertex")
.setQuery(QueryBuilders.queryString("  4y:IN AND 4O:samsung")).addSort("???", SortOrder.DESC)
.setFrom((start-1)*2).setSize(2)
.execute()
.actionGet();

运作良好。这里4y 4O是编码的顶点属性名称。

下面是泰坦索引

TitanKey time = g.makeKey("time").dataType(Long.class).make();
g.makeLabel("created").sortKey(time).sortOrder(Order.DESC).make();

现在在ES代码中我应该添加到addSort()以获取基于time的排序结果?任何想法?

1 个答案:

答案 0 :(得分:0)

首先,为了在ES中利用时间作为排序顺序,您还需要将其编入索引:

g.makeKey("time").dataType(Long.class).indexed("search",Vertex.class).make();

其次,为什么不使用Titan的查询引擎进行此查询?这似乎会让你的生活变得更轻松:

g.query().has("part",CONTAINS,"IN").has("name",CONTAINS,"Samsung").orderBy("time",Order.DESC).vertices()