Java对接ElasticSearch(Es)如何设置查询数据返回条数

Java对接ElasticSearch(Es)设置查询数据返回条数

前言

我们在使用Java对接ElasticSearch时,主要的用处也是用作查询,因为ElasticSearch查询效率达到了毫秒级,效果非常显著,但是它有一个默认值让人很烦恼,那就是请求ES查询接口返回过来的数据,默认返回十条,接下来给大家介绍一下,Java对接的查询器要如何修改默认的返回条数。

在使用Java对接ElasticeSearch时,有多种查询器可以选择,第一种为聚合查询器,可以直接通过"size"来设置ElasticSearch返回的数据条数。

/*
TermsAggregationBuilder 聚合查询器
*/
TermsAggregationBuilder termsAggregationBuilder = AggregationBuilders
                    .terms(TYPE_SUM)
                    .field(TYPE_KEYWORD)
                    .size(20);

FilterAggregationBuilder filterAggregationBuilder = AggregationBuilders
                    .filter(CLOUD_VENDOR_RESOURCE , queryBuilders)
                    .subAggregation(termsAggregationBuilder);

log.info("Request {}", filterAggregationBuilder);

            NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder();
            NativeSearchQuery build = builder
                    .withIndices(CLOUD_RESOURCE)
                    .addAggregation(filterAggregationBuilder).build();

另一种就是查询生成器,这个就没办法通过"size"来设置了,因为在Es里,query接口并没有"size"方法,所以我们得使用NativeSearchQueryBuilder生成器中分页API来设置返回条数

 QueryBuilder queryBuilders = null;

 TermsQueryBuilder mustTermsQueryBuilders = null;

 TermQueryBuilder mustTermQueryBuilders = null;

 MatchAllQueryBuilder mustAllQueryBuilders = null;

 TermQueryBuilder filterQueryBuilder = QueryBuilders
             .termQuery(TENANT_ID , tenantId);

mustTermQueryBuilders = QueryBuilders
              .termQuery(CLOUD_VENDOR_ID , cloudVendorId);

      queryBuilders = QueryBuilders
               .boolQuery()
               .must(mustTermQueryBuilders)
               .filter(filterQueryBuilder);
log.info("Request {}", queryBuilders);

NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder();

            //设置最大返回条数
            Pageable pageable = PageRequest.of(0, 10000);

            //withPageable 【设置查询返回条数】
            //withIndices  【指定索引】
            NativeSearchQuery build = builder
                    .withPageable(pageable)
                    .withIndices(CLOUD_RESOURCE_TENANT_QUOTA)
                    .withQuery(queryBuilders).build();

总结

如果使用聚合查询(AggregationBuilders),可以直接在聚合里设置"size"来控制返回条数

如果使用查询请求生成器(QueryBuilder),就得在最后的请求生成器(NativeSearchQuery)中,通过分页API来实现设置返回条数

最后希望这篇文章对大家有所帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值