我在titan获取的Elastic搜索结果中提出了与分页相关的问题
Pagination with Elastic Search in Titan
并得出结论,它现在不支持,所以为了得到它,我决定使用ES java客户端直接搜索Titan索引。
下面是获取ES记录的泰坦方法:
Iterable<Result<Vertex>> vertices = g.indexQuery("search","v.testTitle:(mytext)")
.addParameter(new Parameter("from", 0))
.addParameter(new Parameter("size", 2)).vertices();
for (Result<Vertex> result : vertices) {
Vertex tv = result.getElement();
System.out.println(tv.getProperty("testTitle")+ ": " + result.getScore());
}其返回值为1记录。
但不支持addParameter(),因此不允许分页。所以我想直接从ES java客户端做同样的事情,如下所示:
Node node = nodeBuilder().node();
Client client = new TransportClient().addTransportAddress(new InetSocketTransportAddress("127.0.0.1", 9300));
SearchResponse response = client.prepareSearch("titan")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(QueryBuilders.fieldQuery("testTitle", "mytext")) // Query
.execute()
.actionGet();
System.out.println(response.getHits().totalHits());
node.close(); 在我的情况下它打印的是零。但Titan代码中的相同查询(如上图)返回1条记录。我是否在这段ES java代码中遗漏了一些Titan特定的参数或选项?
发布于 2014-03-17 15:00:49
我想泰坦正在发送一个QueryStringQuery。也就是说,我建议使用MatchQuery。
QueryBuilders.matchQuery("offerTitle", "your text whatever you want")https://stackoverflow.com/questions/22447871
复制相似问题