...
|
...
|
@@ -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) {
|
...
|
...
|
|