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();

如果满意,请打赏博主任意金额,感兴趣的在微信转账的时候,添加博主微信哦。 请下方留言吧,可与博主自由讨论哦。

支付宝 微信
ElasticSearchTemplate多字段筛选时,字段为null如何拼接?SpringData ES_第1张图片 ElasticSearchTemplate多字段筛选时,字段为null如何拼接?SpringData ES_第2张图片

你可能感兴趣的:(Java)