22.9. 返回 Source 字段

本文介绍了一个使用RESTful API从Elasticsearch中检索特定标签文章列表的方法。通过设置查询条件和排序方式,可以高效地获取到包含指定标签的文章信息。

下面例子查询返回 "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;
	}
		
		




原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值