ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

全文检索工具:第一章:Spring-data-elasticSearch搜索

2021-12-24 17:33:51  阅读:162  来源: 互联网

标签:product return String keyword Spring param 全文检索 elasticSearch id


引入依赖:

=====

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<CommonPage> searchKeyword(@RequestParam(required = false) String keyword,

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

/**

  • 从数据库中导入所有商品到ES

*/

int importAll();

/**

  • 根据关键字,品牌名称或者产品名称搜索(字符串:Text类型最大拆分)

  • @param keyword

  • @param pageNum

  • @param pageSize

  • @return

*/

Page searchKeyword(String keyword, Integer pageNum, Integer pageSize);

/**

  • 删除索引库

  • @return

*/

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;

}

/**

  • 根据关键字,品牌名称或者产品名称,产品编号搜索(字符串:Text类型最大拆分)

  • @param keyword

  • @param pageNum

  • @param pageSize

  • @return

*/

@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);

}

/**

  • 删除索引库

  • @return

*/

@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

================

<?xml version="1.0" encoding="UTF-8"?>

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<EsProduct, Long> {

/**

  • 根据关键字,产品名称,品牌名称,产品编号搜索

  • @param keywords

  • @param productName

  • @param brandName

  • @param page

  • @return

*/

Page findByKeywordsOrProductNameOrBrandNameOrProductSnOrSubTitle(String keywords,String productName,String brandName,String productSn,String subTitle,Pageable page);

标签:product,return,String,keyword,Spring,param,全文检索,elasticSearch,id
来源: https://blog.csdn.net/m0_65483483/article/details/122132054

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有