我有以下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
的排序结果?任何想法?
答案 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()