引入依赖:
=====
org.springframework.boot
spring-boot-starter-data-elasticsearch
控制层:
====
@Autowired
private EsProductService esProductService;
@ApiOperation(value = “简单搜索:根据关键字,品牌名称或者产品名称,产品编号,副标题搜索(字符串:Text类型最大拆分)”)
@RequestMapping(value = “/search/keyword”, method = RequestMethod.GET)
@ResponseBody
public CommonResult
@RequestParam(required = false, defaultValue = “0”) Integer pageNum,
@RequestParam(required = false, defaultValue = “5”) Integer pageSize) {
Page esProductPage = esProductService.searchKeyword(keyword, pageNum, pageSize);
return CommonResult.success(CommonPage.restPage(esProductPage));
}
@ApiOperation(value = “删除索引库”)
@ApiImplicitParam(name = “indexName”, value = “索引库名称”,
defaultValue = “product”, paramType = “query”, dataType = “String”)
@RequestMapping(value = “/deleteAll”, method = RequestMethod.GET)
@ResponseBody
public CommonResult deleteAll(String indexName) {
int i = esProductService.deleteAll(indexName);
return CommonResult.success(i);
}
@ApiOperation(value = “导入所有产品信息数据库中商品到ES”)
@RequestMapping(value = “/importAll”, method = RequestMethod.GET)
@ResponseBody
public CommonResult importAllList() {
int count = esProductService.importAll();
return CommonResult.success(count);
}
service接口:
==========
public interface EsProductService {
int importAll();
Page searchKeyword(String keyword, Integer pageNum, Integer pageSize);
int deleteAll(String indexName);
}
业务实现类:
======
@Service
public class EsProductServiceImpl implements EsProductService {
private static final Logger LOGGER = LoggerFactory.getLogger(EsProductServiceImpl.class);
@Autowired
private EsProductDao productDao;
@Autowired
private EsProductRepository productRepository;
@Autowired
private ElasticsearchTemplate elasticsearchTemplate;
@Override
public int importAll() {
List esProductList = productDao.getAllEsProductList(null);
Iterable esProductIterable = productRepository.saveAll(esProductList);
Iterator iterator = esProductIterable.iterator();
int result = 0;
while (iterator.hasNext()) {
result++;
iterator.next();
}
return result;
}
@Override
public Page searchKeyword(String keyword, Integer pageNum, Integer pageSize) {
Pageable pageable = PageRequest.of(pageNum, pageSize);
return productRepository.findByKeywordsOrProductNameOrBrandNameOrProductSnOrSubTitle(keyword,keyword,keyword,keyword,keyword,pageable);
}
@Override
public int deleteAll(String indexName) {
boolean product = elasticsearchTemplate.deleteIndex(indexName);
if(product){
return 1;
}
return 0;
}
}
EsProductDao接口
==============
public interface EsProductDao {
List getAllEsProductList(@Param(“id”) Long id);
}
EsProductDao.xml
================
SELECT
p.id productId,
p.product_sn productSn,
p.brand_id brandId,
p.brand_name brandName,
p.product_category_id productCategoryId,
p.name productName,
p.sale sale,
p.sub_title subTitle,
p.price price,
p.keywords keywords,
pav.id pavProductAttributevalueId,
pav.value pavProductAttributevalue,
pa.id paProductAttributeId,
pa.name paProductAttributeName,
pc.id pcProductCategoryId,
pc.name pcProductCategoryName
FROM pms_product p
LEFT JOIN pms_product_attribute_value pav ON p.id = pav.product_id
LEFT JOIN pms_product_attribute pa ON pav.product_attribute_id= pa.id
LEFT JOIN pms_product_category pc ON p.product_category_id = pc.id
WHERe delete_status = 0 AND publish_sta
《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》
【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享
tus = 1
and p.id=#{id}
EsProductRepository接口
=====================
public interface EsProductRepository extends ElasticsearchRepository
Page findByKeywordsOrProductNameOrBrandNameOrProductSnOrSubTitle(String keywords,String productName,String brandName,String productSn,String subTitle,Pageable page);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)