/**
* 准备检索请求
* 模糊匹配,过滤(按照属性,分类,品牌,价格区间,库存),排序,分页,高亮,聚合分析
* @return
*/
private SearchRequest buildSearchRequest(SearchParam param) {
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); //构建 DSL 语句的
/**
* 模糊匹配,过滤(按照属性,分类,品牌,价格区间,库存)
*/
//1. 构建bool-query
BoolQueryBuilder boolQuery = new BoolQueryBuilder();
//1.1 bool-must 模糊匹配
if(!StringUtils.isEmpty(param.getKeyword())){
boolQuery.must(QueryBuilders.matchQuery("skuTitle",param.getKeyword()));
}
//1.2 bool-fiter
//1.2.1 catelogId -- 按照三级分类id
if(null != param.getCatalog3Id()){
boolQuery.filter(QueryBuilders.termQuery("catalogId",param.getCatalog3Id()));
}
//1.2.2 brandId 品牌
if(null != param.getBrandId() && param.getBrandId().size() >0){
boolQuery.filter(QueryBuilders.termsQuery("brandId",param.getBrandId()));
}
//1.2.3 attrs 属性
if(param.getAttrs() != null && param.getAttrs().size() > 0){
for(String attrStr : param.getAttrs()) {
//attrs=1_5寸:8寸&2_16G:8G
BoolQueryBuilder nestedboolQuery = QueryBuilders.boolQuery();
//attrs=1_5寸:8寸
String[] s = attrStr.split("_");
String attrId=s[0];
String[] attrValues = s[1].split(":");//这个属性检索用的值
nestedboolQuery.must(QueryBuilders.termQuery("attrs.attrId",attrId));
nestedboolQuery.must(QueryBuilders.termsQuery("attrs.attrValue",attrValues));
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery("attrs",nestedboolQuery, ScoreMode.None);
boolQuery.filter(nestedQuery);
}
// param.getAttrs().forEach(item -> {
// //attrs=1_5寸:8寸&2_16G:8G
// BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
//
//
// //attrs=1_5寸:8寸
// String[] s = item.split("_");
// String attrId=s[0];
// String[] attrValues = s[1].split(":");//这个属性检索用的值
// boolQuery.must(QueryBuilders.termQuery("attrs.attrId",attrId));
// boolQuery.must(QueryBuilders.termsQuery("attrs.attrValue",attrValues));
//
// NestedQueryBuilder nestedQueryBuilder = QueryBuilders.nestedQuery("attrs",boolQuery, ScoreMode.None);
// queryBuilder.filter(nestedQueryBuilder);
// });
}
//1.2.4 hasStock 是否有库存
if(null != param.getHasStock()){
boolQuery.filter(QueryBuilder
181、商城业务-检索服务-SearchRequest构建-聚合
最新推荐文章于 2025-04-25 16:19:23 发布
本文详细介绍了如何使用Elasticsearch构建商品检索系统,包括模糊匹配、属性、分类、品牌、价格区间、库存的过滤,排序,分页,高亮显示及聚合分析等功能,通过具体的代码实现和DSL语句解析,深入理解商品检索系统的构建过程。

最低0.47元/天 解锁文章
1030

被折叠的 条评论
为什么被折叠?



