搜索elasticSearch 分页、过滤、源字段过滤,忽略non-null

本文介绍了如何在Springboot项目中配置ElasticSearch进行搜索操作,实现分页和过滤功能,并利用Jackson设置默认只返回非空字段,避免null值出现在响应中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 int page = request.getPage();
        int size = request.getSize();
        //创建查询构建器
        NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
        //添加源过滤
        queryBuilder.withSourceFilter(new FetchSourceFilter(new String[]{"id","subTitle","skus"},null));
        //分页
        queryBuilder.withPageable(PageRequest.of(page,size));
        //过滤
        queryBuilder.withQuery(QueryBuilders.matchQuery("all",request.getKey()));
        Page<Goods> result = goodsRepository.search(queryBuilder.build());
        //解析分页结果
        long total = result.getTotalElements();
        int totalPages = result.getTotalPages();
        List<Goods> goodsList = result.getContent();
        return new PageResult<>(total,Long.valueOf(totalPages+""),goodsList);

 

int page = request.getPage();
int size = request.getSize();
//创建查询构建器
NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
//添加源过滤
queryBuilder.withSourceFilter(new FetchSourceFilter(new String[]{"id","subTitle","skus"},null));
//分页
queryBuilder.withPageable(PageRequest.of(page,size));
//过滤
queryBuilder.withQuery(QueryBuilders.matchQuery("all",request.getKey()));
Page<Goods> result = goodsRepository.search(queryBuilder.build());
//解析分页结果
long total = result.getTotalElements();
int totalPages = result.getTotalPages();
List<Goods> goodsList = result.getContent();
return new PageResult<>(total,Long.valueOf(totalPages+""),goodsList);

Springboot 配置想页面返回时,不要返回null值

jackson:
    default-property-inclusion: non_null

server:
  port: 8083
spring:
  application:
    name: search-service
  data:
    elasticsearch:
      cluster-name: elasticsearch
      cluster-nodes: 192.168.159.254:9300
  jackson:
    default-property-inclusion: non_null
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:8761/eureka
  instance:
    lease-renewal-interval-in-seconds: 5 # 每隔5秒发送一次心跳
    lease-expiration-duration-in-seconds: 10 # 10秒不发送就过期
    prefer-ip-address: true
    ip-address: 127.0.0.1
    instance-id: ${spring.application.name}:${server.port}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值