Authored by 胡古飞

活动页千人千面支持批量取

... ... @@ -75,7 +75,7 @@ public class NewPromotionServiceImpl implements INewPromotionService,Application
@PostConstruct
void init(){
aggTypeToEsField.put("sort", "smallSortId");
aggTypeToEsField.put("brand", "brand");
aggTypeToEsField.put("brand", "brandId");
}
@Override
... ... @@ -104,9 +104,11 @@ public class NewPromotionServiceImpl implements INewPromotionService,Application
searchParam.setSize(0);
// 4、构造聚合条件
final String firstAggName = "firstAgg";
List<AbstractAggregationBuilder> list = new ArrayList<AbstractAggregationBuilder>();
// 4.1)构造父聚合:品牌或品类聚合【同时按子聚合的sort字段排序】
TermsBuilder brandAggregationBuilder = AggregationBuilders.terms("firstAgg").field(firstAggFiled).order(Terms.Order.aggregation("sort", false)).size(viewNum);
TermsBuilder brandAggregationBuilder = AggregationBuilders.terms(firstAggName).field(firstAggFiled).order(Terms.Order.aggregation("sort", false)).size(viewNum);
// 4.2)添加子聚合:取得分最大的值
brandAggregationBuilder.subAggregation(AggregationBuilders.max("sort").field("_score"));
// 4.3)添加孙聚合:取打分最高的一个product
... ... @@ -130,10 +132,10 @@ public class NewPromotionServiceImpl implements INewPromotionService,Application
return searchApiResult.setData("");
}
Map<String, Aggregation> aggMaps = searchResult.getAggMaps();
if (!aggMaps.containsKey("firstAgg")) {
if (!aggMaps.containsKey(firstAggName)) {
return searchApiResult.setData("");
}
JSONArray productList = this.getProductList(((MultiBucketsAggregation) aggMaps.get("brandAgg")));
JSONArray productList = this.getProductList(((MultiBucketsAggregation) aggMaps.get(firstAggName)));
searchCacheService.addJSONArrayToCache(indexName, searchParam, productList);
return searchApiResult.setData(productList);
} catch (Exception e) {
... ...