| 知乎專欄 | 多維度架構 | | | 微信號 netkiller-ebook | | | QQ群:128659835 請註明“讀者” |
下面例子查詢返回 "id", "title", "description", "image", "ctime"
/*
* 範例:/restful/search/article/list/23/0/20.json?tags=美國
*/
@RequestMapping(value = "/article/list/{siteId}/{from}/{size}")
public List<Map<String, Object>> listBySiteIdAndTags(@PathVariable String siteId, @PathVariable int from, @PathVariable int size, @RequestParam(value = "tags", required = false) String tags) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
SearchRequestBuilder searchRequestBuilder = client.prepareSearch("information").setTypes("article").setSearchType(SearchType.DFS_QUERY_THEN_FETCH).addSort("ctime", SortOrder.DESC);
searchRequestBuilder.setFetchSource(new String[] { "id", "title", "description", "image", "ctime" }, null);
if (tags != null && !tags.equals("")) {
// logger.info(tags);
searchRequestBuilder.setQuery(QueryBuilders.matchQuery("tags", tags));
}
searchRequestBuilder.setPostFilter(QueryBuilders.termQuery("site_id", siteId)).setFrom(from).setSize(size).setExplain(true);
logger.info(searchRequestBuilder.toString());
SearchResponse response = searchRequestBuilder.get();
for (final SearchHit hit : response.getHits().getHits()) {
// logger.info(hit.getSourceAsString());
hit.getSourceAsMap().remove("content");
list.add(hit.getSourceAsMap());
}
logger.info(tags);
return list;
}