当前位置: 代码迷 >> 综合 >> ElasticSearchTemplate多字段筛选时,字段为null如何拼接?SpringData ES
  详细解决方案

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

热度:107   发布时间:2023-10-24 08:58:42.0

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

 

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

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


喜欢本文的朋友不要忘记点一个免费的赞哦,你的赞将是我最大的动力。

  相关解决方案