diff --git a/mall-search/src/main/java/com/macro/mall/search/domain/EsProduct.java b/mall-search/src/main/java/com/macro/mall/search/domain/EsProduct.java index f2ab49b..bfc20ef 100644 --- a/mall-search/src/main/java/com/macro/mall/search/domain/EsProduct.java +++ b/mall-search/src/main/java/com/macro/mall/search/domain/EsProduct.java @@ -1,7 +1,11 @@ package com.macro.mall.search.domain; import com.macro.mall.model.PmsProductAttributeValue; +import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.annotations.Field; +import org.springframework.data.elasticsearch.annotations.FieldIndex; +import org.springframework.data.elasticsearch.annotations.FieldType; import java.io.Serializable; import java.math.BigDecimal; @@ -11,18 +15,25 @@ import java.util.List; * 搜索中的商品信息 * Created by macro on 2018/6/19. */ -@Document(indexName = "pms", type = "product") +@Document(indexName = "pms", type = "product",shards = 1,replicas = 0) public class EsProduct implements Serializable { private static final long serialVersionUID = -1L; + @Id private Long id; + @Field(index = FieldIndex.not_analyzed,type = FieldType.String) private String productSn; private Long brandId; + @Field(index = FieldIndex.not_analyzed,type = FieldType.String) private String brandName; private Long productCategoryId; + @Field(index = FieldIndex.not_analyzed,type = FieldType.String) private String productCategoryName; private String pic; + @Field(analyzer = "ik_max_word",type = FieldType.String) private String name; + @Field(analyzer = "ik_max_word",type = FieldType.String) private String subTitle; + @Field(analyzer = "ik_max_word",type = FieldType.String) private String keywords; private BigDecimal price; private Integer sale; diff --git a/mall-search/src/main/java/com/macro/mall/search/service/impl/EsProductServiceImpl.java b/mall-search/src/main/java/com/macro/mall/search/service/impl/EsProductServiceImpl.java index dd557e6..158dd11 100644 --- a/mall-search/src/main/java/com/macro/mall/search/service/impl/EsProductServiceImpl.java +++ b/mall-search/src/main/java/com/macro/mall/search/service/impl/EsProductServiceImpl.java @@ -105,11 +105,11 @@ public class EsProductServiceImpl implements EsProductService { } //搜索 FunctionScoreQueryBuilder functionScoreQueryBuilder = QueryBuilders.functionScoreQuery() - .add(QueryBuilders.matchPhraseQuery("name", keyword), + .add(QueryBuilders.matchQuery("name", keyword), ScoreFunctionBuilders.weightFactorFunction(1000)) - .add(QueryBuilders.matchPhraseQuery("subTitle", keyword), + .add(QueryBuilders.matchQuery("subTitle", keyword), ScoreFunctionBuilders.weightFactorFunction(500)) - .add(QueryBuilders.matchPhraseQuery("keywords", keyword), + .add(QueryBuilders.matchQuery("keywords", keyword), ScoreFunctionBuilders.weightFactorFunction(200)) .scoreMode("sum").setMinScore(10f); if (StringUtils.isEmpty(keyword)) { diff --git a/mall-search/src/main/resources/dao/EsProductDao.xml b/mall-search/src/main/resources/dao/EsProductDao.xml index fe35e2e..24e5d52 100644 --- a/mall-search/src/main/resources/dao/EsProductDao.xml +++ b/mall-search/src/main/resources/dao/EsProductDao.xml @@ -23,7 +23,7 @@ p.recommand_status recommandStatus, p.stock stock, p.promotion_type promotionType, - P.keywords keywords + P.keywords keywords, p.sort sort, a.id attr_id, a.value attr_value, diff --git a/mall-search/src/test/java/com/macro/mall/search/MallSearchApplicationTests.java b/mall-search/src/test/java/com/macro/mall/search/MallSearchApplicationTests.java index 6b48439..cd8634a 100644 --- a/mall-search/src/test/java/com/macro/mall/search/MallSearchApplicationTests.java +++ b/mall-search/src/test/java/com/macro/mall/search/MallSearchApplicationTests.java @@ -2,19 +2,24 @@ package com.macro.mall.search; import com.macro.mall.search.dao.EsProductDao; import com.macro.mall.search.domain.EsProduct; +import com.macro.mall.search.repository.EsProductRepository; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; import org.springframework.test.context.junit4.SpringRunner; import java.util.List; +import java.util.Map; @RunWith(SpringRunner.class) @SpringBootTest public class MallSearchApplicationTests { @Autowired private EsProductDao productDao; + @Autowired + private ElasticsearchTemplate elasticsearchTemplate; @Test public void contextLoads() { } @@ -23,5 +28,11 @@ public class MallSearchApplicationTests { List esProductList = productDao.getAllEsProductList(null); System.out.print(esProductList); } + @Test + public void testEsMapping(){ + elasticsearchTemplate.putMapping(EsProduct.class); + Map mapping = elasticsearchTemplate.getMapping(EsProduct.class); + System.out.println(mapping); + } }