關於elasticsearch聚合查詢只有10條數據(java)


業務:查詢熱點詞匯

實現:使用聚合函數,統計前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;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM