我在这里提出了由titan提取的弹性搜索结果中与分页有关的问题
Pagination with Elastic Search in Titan
并得出结论,它现在不支持,所以我决定直接使用ES java客户端搜索Titan
索引。
以下是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
特定参数或选项
答案 0 :(得分:0)
我认为Titan正在发送QueryStringQuery。 也就是说,我建议使用MatchQuery。
QueryBuilders.matchQuery("offerTitle", "your text whatever you want")