基于elasticsearch7.9.3版本的操作
构建查询条件的基本代码
// 获取分页查询构造器
SearchSourceBuilder sourceBuilder = ElasticClientUtil.builderPageSearchBuilder(page, size);
// 构造父级查询条件
// 指定hasParent查询条件,限定查询结果的父文档类型是 店铺:goodsStore
QueryBuilder parentQueryBuilder;
// 商品店铺id不为空,根据id筛选,否则查询所有
if (StringUtils.hasLength(goodsStoreId)) {
parentQueryBuilder = new TermQueryBuilder(QueryFiledNameConstant.UNDERSCORE_ID, goodsStoreId);
}else {
parentQueryBuilder = new MatchAllQueryBuilder();
}
HasParentQueryBuilder hasParentQueryBuilder =
new HasParentQueryBuilder(GoodsRelationField.GOODS_STORE, parentQueryBuilder, false)
.innerHit(new InnerHitBuilder());
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery().must(hasParentQueryBuilder);
// 构造子级查询条件
// 查询商品spu的子