/*
* 範例:/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)
// .addFields("_source","title", "description", "ctime")
;
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;
}
}