标签:10 hits java esReturn bucketsReturnVO searchKeyword elasticsearch 聚合 termsBuilde
业务:查询热点词汇
实现:使用聚合函数,统计前100条高频词汇
解决聚合只显示10条问题:
在构建termsBuilder聚合查询对构建器时,在最后设置size值为100,完美解决
public ESReturn searchHotPoint(Integer day, Integer num) { ESReturn esReturn = new ESReturn(); List<BucketsReturnVO> bucketsReturnVOList = new ArrayList<>(); Client client = clientHelper.getClient(); //分组聚合 AggregationBuilder termsBuilder = AggregationBuilders.terms("by_searchKeyword").field("searchKeyword").size(100); AggregationBuilder countBuilder = AggregationBuilders.count("searchKeywordCount").field("searchKeyword"); termsBuilder.subAggregation(countBuilder); SearchRequestBuilder sb = client.prepareSearch("search_history").setTypes("user_search_history"); SearchResponse sr = sb.setQuery(QueryESUtil.getQueryBuildByDay(day)) .addAggregation(termsBuilder) .get(); SearchHits hits = sr.getHits(); SearchHit[] lists = hits.getHits(); logger.info("总命中数:" + hits.totalHits); logger.info("总长度:" + lists.length); Aggregation bySearchKeyword = sr.getAggregations().asMap().get("by_searchKeyword"); //转成BySearchKeywordVO对象 BySearchKeywordVO keywordVO = GsonUtil.GsonToBean(bySearchKeyword.toString(), BySearchKeywordVO.class); List<Buckets> buckets = keywordVO.getBy_searchKeyword().getBuckets(); //整理返回数据 for (Buckets bucket : buckets) { BucketsReturnVO bucketsReturnVO = new BucketsReturnVO(); bucketsReturnVO.setKeyword(bucket.getKey()); bucketsReturnVO.setDocCount(bucket.getDoc_count()); bucketsReturnVOList.add(bucketsReturnVO); } esReturn.setTotal(hits.totalHits); esReturn.setData(bucketsReturnVOList); return esReturn; }
标签:10,hits,java,esReturn,bucketsReturnVO,searchKeyword,elasticsearch,聚合,termsBuilde 来源: https://www.cnblogs.com/mlzdev/p/11832798.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。