java中ES操作语法分组

原创
2020/09/07 15:42
阅读数 137
    public List<CompanyVO> searchGroupChenQ(List<Long> tids, List<String> keywords) {

        String key = "tid";

        String[] strings = new String[keywords.size()];
        keywords.toArray(strings);
        SearchSourceBuilder bulder = new SearchSourceBuilder();
        BoolQueryBuilder should = QueryBuilders.boolQuery().must(QueryBuilders.termsQuery("content", keywords))
                .must(QueryBuilders.termsQuery("tid", tids));
        bulder.query(should);
        IncludeExclude includeExclude = new IncludeExclude(strings, null);
        TermsAggregationBuilder agg = AggregationBuilders.terms("tids").field(key)
                .subAggregation(AggregationBuilders.terms("keywords").field("content").includeExclude(includeExclude)
                        .subAggregation(AggregationBuilders.topHits("topHits")
                                .fetchSource(new String[]{"tid", "tname", "dname"}, new String[]{"did", "title", "cityid", "cityName", "content", "createDate"})
                                .size(5)));
        bulder.aggregation(agg).size(0);
        List<CompanyVO> value = baseElasticService.searchGroupChenQ("notice_info_new", bulder);
        return value;
    }


    public List<CompanyVO> searchGroupChenQNew(List<Long> tids, List<String> keywords) {

        String key = "tid";

        String[] strings = new String[keywords.size()];
        keywords.toArray(strings);
        SearchSourceBuilder bulder = new SearchSourceBuilder();
        BoolQueryBuilder should = QueryBuilders.boolQuery().must(QueryBuilders.termsQuery("content", keywords))
                .must(QueryBuilders.termsQuery("tid", tids));
        bulder.query(should);
        IncludeExclude includeExclude = new IncludeExclude(strings, null);
        TermsAggregationBuilder agg = AggregationBuilders.terms("tids").field(key)
                .subAggregation(AggregationBuilders.terms("keywords").field("content").includeExclude(includeExclude)
                        .subAggregation(AggregationBuilders.topHits("topHits")
                                .fetchSource(new String[]{"tid", "tname", "dname"}, new String[]{"did", "title", "cityid", "cityName", "content", "createDate"})
                                .size(5)));
        bulder.aggregation(agg).size(0);
        List<CompanyVO> value = baseElasticService.searchGroupChenQNew("notice_info_new", bulder);
        return value;
    }

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部