ElasticSearchTemplate多字段筛选时,字段为null如何拼接?SpringData ES

这篇文章是写给小白的,大神请略过。因为我是小白的时候踩了这样的坑,但是在网上没有找到明确的答案,都只是说让在业务代码里判空拼接,至于怎么拼接,就没有答案了。

我来简单说下吧,假如我要通过城市编码和多个品牌做筛选查看商品列表:

BoolQueryBuilder boolQueryBuilder = boolQuery().must(termQuery("cityCode",searchParams.getCityCode())
                                .must(termsQuery("brandIds", searchParams.getBrandIds()));
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withPageable(pageable).build();

这时候如果cityCode和brandIds有为null或者为空的,就会报错,判空拼接方法如下:

BoolQueryBuilder boolQueryBuilder = boolQuery();
if (null != searchParams.getCityCode()) {
    boolQueryBuilder.must(termQuery("cityCode", searchParams.getCityCode()));
}
if (null != searchParams.getBrandIds() && !searchParams.getBrandIds().isEmpty()) {
    boolQueryBuilder.must(termsQuery("brandIds", searchParams.getBrandIds()));
}
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withPageable(pageable).build();


猜你喜欢

转载自blog.csdn.net/qq_34972627/article/details/80270292