Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
wwwanlingxiao
mall
Commits
dcb1b79f
Commit
dcb1b79f
authored
Jun 25, 2022
by
macro
Browse files
MinIO、Elasticsearch升级,Logstash添加内部TCP日志开关
parent
d5995151
Changes
11
Hide whitespace changes
Inline
Side-by-side
mall-admin/src/main/java/com/macro/mall/controller/MinioController.java
View file @
dcb1b79f
...
...
@@ -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
(
@RequestPar
am
(
"file"
)
MultipartFile
file
)
{
public
CommonResult
upload
(
@RequestPar
t
(
"file"
)
MultipartFile
file
)
{
try
{
//创建一个MinIO的Java客户端
MinioClient
minioClient
=
MinioClient
.
builder
()
...
...
mall-admin/src/main/resources/application-dev.yml
View file @
dcb1b79f
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
mall-admin/src/main/resources/application-prod.yml
View file @
dcb1b79f
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
...
...
mall-common/src/main/resources/logback-spring.xml
View file @
dcb1b79f
...
...
@@ -11,6 +11,8 @@
<property
name=
"LOG_FILE_PATH"
value=
"${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/logs}"
/>
<!--LogStash访问host-->
<springProperty
name=
"LOG_STASH_HOST"
scope=
"context"
source=
"logstash.host"
defaultValue=
"localhost"
/>
<!--是否开启LogStash插件内部日志-->
<springProperty
name=
"ENABLE_INNER_LOG"
scope=
"context"
source=
"logstash.enableInnerLog"
defaultValue=
"false"
/>
<!--DEBUG日志输出到文件-->
<appender
name=
"FILE_DEBUG"
...
...
@@ -64,6 +66,7 @@
<level>
DEBUG
</level>
</filter>
<destination>
${LOG_STASH_HOST}:4560
</destination>
<addDefaultStatusListener>
${ENABLE_INNER_LOG}
</addDefaultStatusListener>
<encoder
charset=
"UTF-8"
class=
"net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"
>
<providers>
<timestamp>
...
...
@@ -96,6 +99,7 @@
<onMismatch>
DENY
</onMismatch>
</filter>
<destination>
${LOG_STASH_HOST}:4561
</destination>
<addDefaultStatusListener>
${ENABLE_INNER_LOG}
</addDefaultStatusListener>
<encoder
charset=
"UTF-8"
class=
"net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"
>
<providers>
<timestamp>
...
...
@@ -123,6 +127,7 @@
<!--业务日志输出到LogStash-->
<appender
name=
"LOG_STASH_BUSINESS"
class=
"net.logstash.logback.appender.LogstashTcpSocketAppender"
>
<destination>
${LOG_STASH_HOST}:4562
</destination>
<addDefaultStatusListener>
${ENABLE_INNER_LOG}
</addDefaultStatusListener>
<encoder
charset=
"UTF-8"
class=
"net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"
>
<providers>
<timestamp>
...
...
@@ -150,6 +155,7 @@
<!--接口访问记录日志输出到LogStash-->
<appender
name=
"LOG_STASH_RECORD"
class=
"net.logstash.logback.appender.LogstashTcpSocketAppender"
>
<destination>
${LOG_STASH_HOST}:4563
</destination>
<addDefaultStatusListener>
${ENABLE_INNER_LOG}
</addDefaultStatusListener>
<encoder
charset=
"UTF-8"
class=
"net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"
>
<providers>
<timestamp>
...
...
mall-demo/src/main/resources/logback-spring.xml
deleted
100644 → 0
View file @
d5995151
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
<include
resource=
"org/springframework/boot/logging/logback/base.xml"
/>
<appender
name=
"LOGSTASH"
class=
"net.logstash.logback.appender.LogstashTcpSocketAppender"
>
<destination>
localhost:4560
</destination>
<encoder
charset=
"UTF-8"
class=
"net.logstash.logback.encoder.LogstashEncoder"
/>
</appender>
<root
level=
"INFO"
>
<appender-ref
ref=
"LOGSTASH"
/>
<appender-ref
ref=
"CONSOLE"
/>
</root>
</configuration>
mall-portal/src/main/resources/application-dev.yml
View file @
dcb1b79f
...
...
@@ -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
mall-portal/src/main/resources/application-prod.yml
View file @
dcb1b79f
...
...
@@ -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
:
...
...
mall-search/src/main/java/com/macro/mall/search/domain/EsProduct.java
View file @
dcb1b79f
...
...
@@ -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
...
...
mall-search/src/main/java/com/macro/mall/search/service/impl/EsProductServiceImpl.java
View file @
dcb1b79f
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
.
withSort
s
(
SortBuilders
.
fieldSort
(
"id"
).
order
(
SortOrder
.
DESC
));
}
else
if
(
sort
==
2
){
//按销量从高到低
nativeSearchQueryBuilder
.
withSort
(
SortBuilders
.
fieldSort
(
"sale"
).
order
(
SortOrder
.
DESC
));
nativeSearchQueryBuilder
.
withSort
s
(
SortBuilders
.
fieldSort
(
"sale"
).
order
(
SortOrder
.
DESC
));
}
else
if
(
sort
==
3
){
//按价格从低到高
nativeSearchQueryBuilder
.
withSort
(
SortBuilders
.
fieldSort
(
"price"
).
order
(
SortOrder
.
ASC
));
nativeSearchQueryBuilder
.
withSort
s
(
SortBuilders
.
fieldSort
(
"price"
).
order
(
SortOrder
.
ASC
));
}
else
if
(
sort
==
4
){
//按价格从高到低
nativeSearchQueryBuilder
.
withSort
(
SortBuilders
.
fieldSort
(
"price"
).
order
(
SortOrder
.
DESC
));
nativeSearchQueryBuilder
.
withSort
s
(
SortBuilders
.
fieldSort
(
"price"
).
order
(
SortOrder
.
DESC
));
}
else
{
//按相关度
nativeSearchQueryBuilder
.
withSort
(
SortBuilders
.
scoreSort
().
order
(
SortOrder
.
DESC
));
nativeSearchQueryBuilder
.
withSort
s
(
SortBuilders
.
scoreSort
().
order
(
SortOrder
.
DESC
));
}
nativeSearchQueryBuilder
.
withSort
(
SortBuilders
.
scoreSort
().
order
(
SortOrder
.
DESC
));
nativeSearchQueryBuilder
.
withSort
s
(
SortBuilders
.
scoreSort
().
order
(
SortOrder
.
DESC
));
NativeSearchQuery
searchQuery
=
nativeSearchQueryBuilder
.
build
();
LOGGER
.
info
(
"DSL:{}"
,
searchQuery
.
getQuery
().
toString
());
SearchHits
<
EsProduct
>
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
(
Str
ing
Util
s
.
isEmpty
(
keyword
)){
if
(
StrUtil
.
isEmpty
(
keyword
)){
builder
.
withQuery
(
QueryBuilders
.
matchAllQuery
());
}
else
{
builder
.
withQuery
(
QueryBuilders
.
multiMatchQuery
(
keyword
,
"name"
,
"subTitle"
,
"keywords"
));
}
//聚合搜索品牌名称
builder
.
add
Aggregation
(
AggregationBuilders
.
terms
(
"brandNames"
).
field
(
"brandName"
));
builder
.
with
Aggregation
s
(
AggregationBuilders
.
terms
(
"brandNames"
).
field
(
"brandName"
));
//集合搜索分类名称
builder
.
add
Aggregation
(
AggregationBuilders
.
terms
(
"productCategoryNames"
).
field
(
"productCategoryName"
));
builder
.
with
Aggregation
s
(
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
.
add
Aggregation
(
aggregationBuilder
);
builder
.
with
Aggregation
s
(
aggregationBuilder
);
NativeSearchQuery
searchQuery
=
builder
.
build
();
SearchHits
<
EsProduct
>
searchHits
=
elasticsearchRestTemplate
.
search
(
searchQuery
,
EsProduct
.
class
);
return
convertProductRelatedInfo
(
searchHits
);
...
...
@@ -246,7 +245,7 @@ public class EsProductServiceImpl implements EsProductService {
*/
private
EsProductRelatedInfo
convertProductRelatedInfo
(
SearchHits
<
EsProduct
>
response
)
{
EsProductRelatedInfo
productRelatedInfo
=
new
EsProductRelatedInfo
();
Map
<
String
,
Aggregation
>
aggregationMap
=
response
.
getAggregations
().
getA
sMap
();
Map
<
String
,
Aggregation
>
aggregationMap
=
((
Aggregations
)
response
.
getAggregations
().
aggregations
()).
a
sMap
();
//设置品牌
Aggregation
brandNames
=
aggregationMap
.
get
(
"brandNames"
);
List
<
String
>
brandNameList
=
new
ArrayList
<>();
...
...
mall-search/src/main/resources/application-dev.yml
View file @
dcb1b79f
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
mall-search/src/main/resources/application-prod.yml
View file @
dcb1b79f
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
:
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment