From dcb1b79f6a899ff0320aed204d915471bc8fb7fa Mon Sep 17 00:00:00 2001 From: macro Date: Sat, 25 Jun 2022 20:20:46 +0800 Subject: [PATCH] =?UTF-8?q?MinIO=E3=80=81Elasticsearch=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=EF=BC=8CLogstash=E6=B7=BB=E5=8A=A0=E5=86=85=E9=83=A8TCP?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mall/controller/MinioController.java | 7 ++--- .../src/main/resources/application-dev.yml | 11 +++++-- .../src/main/resources/application-prod.yml | 8 ++++- .../src/main/resources/logback-spring.xml | 6 ++++ .../src/main/resources/logback-spring.xml | 14 --------- .../src/main/resources/application-dev.yml | 3 +- .../src/main/resources/application-prod.yml | 2 +- .../macro/mall/search/domain/EsProduct.java | 4 ++- .../service/impl/EsProductServiceImpl.java | 29 +++++++++---------- .../src/main/resources/application-dev.yml | 8 ++--- .../src/main/resources/application-prod.yml | 5 ++-- 11 files changed, 50 insertions(+), 47 deletions(-) delete mode 100644 mall-demo/src/main/resources/logback-spring.xml diff --git a/mall-admin/src/main/java/com/macro/mall/controller/MinioController.java b/mall-admin/src/main/java/com/macro/mall/controller/MinioController.java index fb30e6c..b0adecd 100644 --- a/mall-admin/src/main/java/com/macro/mall/controller/MinioController.java +++ b/mall-admin/src/main/java/com/macro/mall/controller/MinioController.java @@ -12,10 +12,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.text.SimpleDateFormat; @@ -43,7 +40,7 @@ public class MinioController { @ApiOperation("文件上传") @RequestMapping(value = "/upload", method = RequestMethod.POST) @ResponseBody - public CommonResult upload(@RequestParam("file") MultipartFile file) { + public CommonResult upload(@RequestPart("file") MultipartFile file) { try { //创建一个MinIO的Java客户端 MinioClient minioClient =MinioClient.builder() diff --git a/mall-admin/src/main/resources/application-dev.yml b/mall-admin/src/main/resources/application-dev.yml index b6d7a0b..1a75381 100644 --- a/mall-admin/src/main/resources/application-dev.yml +++ b/mall-admin/src/main/resources/application-dev.yml @@ -1,6 +1,6 @@ spring: datasource: - url: jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai + url: jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false username: root password: root druid: @@ -19,10 +19,17 @@ spring: password: # Redis服务器连接密码(默认为空) timeout: 300ms # 连接超时时间(毫秒) +minio: + endpoint: http://localhost:9000 #MinIO服务所在地址 + bucketName: mall #存储桶名称 + accessKey: minioadmin #访问的key + secretKey: minioadmin #访问的秘钥 + logging: level: root: info com.macro.mall: debug logstash: - host: localhost \ No newline at end of file + host: localhost + enableInnerLog: false \ No newline at end of file diff --git a/mall-admin/src/main/resources/application-prod.yml b/mall-admin/src/main/resources/application-prod.yml index c8cfe5c..7a63641 100644 --- a/mall-admin/src/main/resources/application-prod.yml +++ b/mall-admin/src/main/resources/application-prod.yml @@ -1,6 +1,6 @@ spring: datasource: - url: jdbc:mysql://db:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai + url: jdbc:mysql://db:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false username: reader password: 123456 druid: @@ -19,6 +19,12 @@ spring: password: # Redis服务器连接密码(默认为空) timeout: 300ms # 连接超时时间(毫秒) +minio: + endpoint: http://192.168.3.101:9090 #MinIO服务所在地址 + bucketName: mall #存储桶名称 + accessKey: minioadmin #访问的key + secretKey: minioadmin #访问的秘钥 + logging: file: path: /var/logs diff --git a/mall-common/src/main/resources/logback-spring.xml b/mall-common/src/main/resources/logback-spring.xml index eeac305..a478db3 100644 --- a/mall-common/src/main/resources/logback-spring.xml +++ b/mall-common/src/main/resources/logback-spring.xml @@ -11,6 +11,8 @@ + + DEBUG ${LOG_STASH_HOST}:4560 + ${ENABLE_INNER_LOG} @@ -96,6 +99,7 @@ DENY ${LOG_STASH_HOST}:4561 + ${ENABLE_INNER_LOG} @@ -123,6 +127,7 @@ ${LOG_STASH_HOST}:4562 + ${ENABLE_INNER_LOG} @@ -150,6 +155,7 @@ ${LOG_STASH_HOST}:4563 + ${ENABLE_INNER_LOG} diff --git a/mall-demo/src/main/resources/logback-spring.xml b/mall-demo/src/main/resources/logback-spring.xml deleted file mode 100644 index 4b7b6da..0000000 --- a/mall-demo/src/main/resources/logback-spring.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - localhost:4560 - - - - - - - - diff --git a/mall-portal/src/main/resources/application-dev.yml b/mall-portal/src/main/resources/application-dev.yml index c0af59e..8ab796b 100644 --- a/mall-portal/src/main/resources/application-dev.yml +++ b/mall-portal/src/main/resources/application-dev.yml @@ -3,7 +3,7 @@ server: spring: datasource: - url: jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai + url: jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false username: root password: root druid: @@ -40,4 +40,5 @@ logging: logstash: host: localhost + enableInnerLog: false diff --git a/mall-portal/src/main/resources/application-prod.yml b/mall-portal/src/main/resources/application-prod.yml index c272a4f..32b8d22 100644 --- a/mall-portal/src/main/resources/application-prod.yml +++ b/mall-portal/src/main/resources/application-prod.yml @@ -3,7 +3,7 @@ server: spring: datasource: - url: jdbc:mysql://db:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai + url: jdbc:mysql://db:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false username: reader password: 123456 druid: 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 cdb17e0..8424965 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 @@ -6,6 +6,7 @@ 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.FieldType; +import org.springframework.data.elasticsearch.annotations.Setting; import java.io.Serializable; import java.math.BigDecimal; @@ -17,7 +18,8 @@ import java.util.List; */ @Data @EqualsAndHashCode -@Document(indexName = "pms",shards = 1,replicas = 0) +@Document(indexName = "pms") +@Setting(shards = 1,replicas = 0) public class EsProduct implements Serializable { private static final long serialVersionUID = -1L; @Id 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 fa48828..d8d0041 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 @@ -1,5 +1,6 @@ package com.macro.mall.search.service.impl; +import cn.hutool.core.util.StrUtil; import com.macro.mall.search.dao.EsProductDao; import com.macro.mall.search.domain.EsProduct; import com.macro.mall.search.domain.EsProductRelatedInfo; @@ -13,6 +14,7 @@ import org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders; import org.elasticsearch.search.aggregations.AbstractAggregationBuilder; import org.elasticsearch.search.aggregations.Aggregation; import org.elasticsearch.search.aggregations.AggregationBuilders; +import org.elasticsearch.search.aggregations.Aggregations; import org.elasticsearch.search.aggregations.bucket.filter.ParsedFilter; import org.elasticsearch.search.aggregations.bucket.nested.ParsedNested; import org.elasticsearch.search.aggregations.bucket.terms.ParsedLongTerms; @@ -36,10 +38,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @@ -142,21 +141,21 @@ public class EsProductServiceImpl implements EsProductService { //排序 if(sort==1){ //按新品从新到旧 - nativeSearchQueryBuilder.withSort(SortBuilders.fieldSort("id").order(SortOrder.DESC)); + nativeSearchQueryBuilder.withSorts(SortBuilders.fieldSort("id").order(SortOrder.DESC)); }else if(sort==2){ //按销量从高到低 - nativeSearchQueryBuilder.withSort(SortBuilders.fieldSort("sale").order(SortOrder.DESC)); + nativeSearchQueryBuilder.withSorts(SortBuilders.fieldSort("sale").order(SortOrder.DESC)); }else if(sort==3){ //按价格从低到高 - nativeSearchQueryBuilder.withSort(SortBuilders.fieldSort("price").order(SortOrder.ASC)); + nativeSearchQueryBuilder.withSorts(SortBuilders.fieldSort("price").order(SortOrder.ASC)); }else if(sort==4){ //按价格从高到低 - nativeSearchQueryBuilder.withSort(SortBuilders.fieldSort("price").order(SortOrder.DESC)); + nativeSearchQueryBuilder.withSorts(SortBuilders.fieldSort("price").order(SortOrder.DESC)); }else{ //按相关度 - nativeSearchQueryBuilder.withSort(SortBuilders.scoreSort().order(SortOrder.DESC)); + nativeSearchQueryBuilder.withSorts(SortBuilders.scoreSort().order(SortOrder.DESC)); } - nativeSearchQueryBuilder.withSort(SortBuilders.scoreSort().order(SortOrder.DESC)); + nativeSearchQueryBuilder.withSorts(SortBuilders.scoreSort().order(SortOrder.DESC)); NativeSearchQuery searchQuery = nativeSearchQueryBuilder.build(); LOGGER.info("DSL:{}", searchQuery.getQuery().toString()); SearchHits searchHits = elasticsearchRestTemplate.search(searchQuery, EsProduct.class); @@ -217,15 +216,15 @@ public class EsProductServiceImpl implements EsProductService { public EsProductRelatedInfo searchRelatedInfo(String keyword) { NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder(); //搜索条件 - if(StringUtils.isEmpty(keyword)){ + if(StrUtil.isEmpty(keyword)){ builder.withQuery(QueryBuilders.matchAllQuery()); }else{ builder.withQuery(QueryBuilders.multiMatchQuery(keyword,"name","subTitle","keywords")); } //聚合搜索品牌名称 - builder.addAggregation(AggregationBuilders.terms("brandNames").field("brandName")); + builder.withAggregations(AggregationBuilders.terms("brandNames").field("brandName")); //集合搜索分类名称 - builder.addAggregation(AggregationBuilders.terms("productCategoryNames").field("productCategoryName")); + builder.withAggregations(AggregationBuilders.terms("productCategoryNames").field("productCategoryName")); //聚合搜索商品属性,去除type=1的属性 AbstractAggregationBuilder aggregationBuilder = AggregationBuilders.nested("allAttrValues","attrValueList") .subAggregation(AggregationBuilders.filter("productAttrs",QueryBuilders.termQuery("attrValueList.type",1)) @@ -235,7 +234,7 @@ public class EsProductServiceImpl implements EsProductService { .field("attrValueList.value")) .subAggregation(AggregationBuilders.terms("attrNames") .field("attrValueList.name")))); - builder.addAggregation(aggregationBuilder); + builder.withAggregations(aggregationBuilder); NativeSearchQuery searchQuery = builder.build(); SearchHits searchHits = elasticsearchRestTemplate.search(searchQuery, EsProduct.class); return convertProductRelatedInfo(searchHits); @@ -246,7 +245,7 @@ public class EsProductServiceImpl implements EsProductService { */ private EsProductRelatedInfo convertProductRelatedInfo(SearchHits response) { EsProductRelatedInfo productRelatedInfo = new EsProductRelatedInfo(); - Map aggregationMap = response.getAggregations().getAsMap(); + Map aggregationMap = ((Aggregations)response.getAggregations().aggregations()).asMap(); //设置品牌 Aggregation brandNames = aggregationMap.get("brandNames"); List brandNameList = new ArrayList<>(); diff --git a/mall-search/src/main/resources/application-dev.yml b/mall-search/src/main/resources/application-dev.yml index 9804340..8793b79 100644 --- a/mall-search/src/main/resources/application-dev.yml +++ b/mall-search/src/main/resources/application-dev.yml @@ -1,6 +1,6 @@ spring: datasource: - url: jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai + url: jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false username: root password: root druid: @@ -17,8 +17,7 @@ spring: repositories: enabled: true elasticsearch: - rest: - uris: localhost:9200 + uris: localhost:9200 logging: level: @@ -26,4 +25,5 @@ logging: com.macro.mall: debug logstash: - host: localhost \ No newline at end of file + host: localhost + enableInnerLog: false \ No newline at end of file diff --git a/mall-search/src/main/resources/application-prod.yml b/mall-search/src/main/resources/application-prod.yml index 2fd0771..07b4fc9 100644 --- a/mall-search/src/main/resources/application-prod.yml +++ b/mall-search/src/main/resources/application-prod.yml @@ -1,6 +1,6 @@ spring: datasource: - url: jdbc:mysql://db:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai + url: jdbc:mysql://db:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false username: reader password: 123456 druid: @@ -17,8 +17,7 @@ spring: repositories: enabled: true elasticsearch: - rest: - uris: es:9200 + uris: es:9200 logging: file: