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
c3359c9f
Commit
c3359c9f
authored
Mar 21, 2019
by
macro
Browse files
springboot升级至2.1.3,elasticsearch升级至6.2.2
parent
470c40eb
Changes
24
Hide whitespace changes
Inline
Side-by-side
mall-search/src/main/java/com/macro/mall/search/domain/EsProduct.java
View file @
c3359c9f
...
@@ -3,7 +3,6 @@ package com.macro.mall.search.domain;
...
@@ -3,7 +3,6 @@ package com.macro.mall.search.domain;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.elasticsearch.annotations.Document
;
import
org.springframework.data.elasticsearch.annotations.Document
;
import
org.springframework.data.elasticsearch.annotations.Field
;
import
org.springframework.data.elasticsearch.annotations.Field
;
import
org.springframework.data.elasticsearch.annotations.FieldIndex
;
import
org.springframework.data.elasticsearch.annotations.FieldType
;
import
org.springframework.data.elasticsearch.annotations.FieldType
;
import
java.io.Serializable
;
import
java.io.Serializable
;
...
@@ -19,20 +18,20 @@ public class EsProduct implements Serializable {
...
@@ -19,20 +18,20 @@ public class EsProduct implements Serializable {
private
static
final
long
serialVersionUID
=
-
1L
;
private
static
final
long
serialVersionUID
=
-
1L
;
@Id
@Id
private
Long
id
;
private
Long
id
;
@Field
(
index
=
FieldIndex
.
not_analyzed
,
type
=
FieldType
.
String
)
@Field
(
index
=
false
)
private
String
productSn
;
private
String
productSn
;
private
Long
brandId
;
private
Long
brandId
;
@Field
(
index
=
FieldIndex
.
not_analyzed
,
type
=
FieldType
.
String
)
@Field
(
index
=
false
)
private
String
brandName
;
private
String
brandName
;
private
Long
productCategoryId
;
private
Long
productCategoryId
;
@Field
(
index
=
FieldIndex
.
not_analyzed
,
type
=
FieldType
.
String
)
@Field
(
index
=
false
)
private
String
productCategoryName
;
private
String
productCategoryName
;
private
String
pic
;
private
String
pic
;
@Field
(
analyzer
=
"ik_max_word"
,
type
=
FieldType
.
String
)
@Field
(
analyzer
=
"ik_max_word"
)
private
String
name
;
private
String
name
;
@Field
(
analyzer
=
"ik_max_word"
,
type
=
FieldType
.
String
)
@Field
(
analyzer
=
"ik_max_word"
)
private
String
subTitle
;
private
String
subTitle
;
@Field
(
analyzer
=
"ik_max_word"
,
type
=
FieldType
.
String
)
@Field
(
analyzer
=
"ik_max_word"
)
private
String
keywords
;
private
String
keywords
;
private
BigDecimal
price
;
private
BigDecimal
price
;
private
Integer
sale
;
private
Integer
sale
;
...
...
mall-search/src/main/java/com/macro/mall/search/domain/EsProductAttributeValue.java
View file @
c3359c9f
package
com.macro.mall.search.domain
;
package
com.macro.mall.search.domain
;
import
org.springframework.data.elasticsearch.annotations.Field
;
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.io.Serializable
;
...
@@ -15,12 +13,12 @@ public class EsProductAttributeValue implements Serializable {
...
@@ -15,12 +13,12 @@ public class EsProductAttributeValue implements Serializable {
private
Long
id
;
private
Long
id
;
private
Long
productAttributeId
;
private
Long
productAttributeId
;
//属性值
//属性值
@Field
(
index
=
FieldIndex
.
not_analyzed
,
type
=
FieldType
.
String
)
@Field
(
index
=
false
)
private
String
value
;
private
String
value
;
//属性参数:0->规格;1->参数
//属性参数:0->规格;1->参数
private
Integer
type
;
private
Integer
type
;
//属性名称
//属性名称
@Field
(
index
=
FieldIndex
.
not_analyzed
,
type
=
FieldType
.
String
)
@Field
(
index
=
false
)
private
String
name
;
private
String
name
;
public
Long
getId
()
{
public
Long
getId
()
{
return
id
;
return
id
;
...
...
mall-search/src/main/java/com/macro/mall/search/service/impl/EsProductServiceImpl.java
View file @
c3359c9f
...
@@ -6,6 +6,7 @@ import com.macro.mall.search.domain.EsProductRelatedInfo;
...
@@ -6,6 +6,7 @@ import com.macro.mall.search.domain.EsProductRelatedInfo;
import
com.macro.mall.search.repository.EsProductRepository
;
import
com.macro.mall.search.repository.EsProductRepository
;
import
com.macro.mall.search.service.EsProductService
;
import
com.macro.mall.search.service.EsProductService
;
import
org.elasticsearch.action.search.SearchResponse
;
import
org.elasticsearch.action.search.SearchResponse
;
import
org.elasticsearch.common.lucene.search.function.FunctionScoreQuery
;
import
org.elasticsearch.index.query.BoolQueryBuilder
;
import
org.elasticsearch.index.query.BoolQueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder
;
import
org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder
;
...
@@ -55,7 +56,7 @@ public class EsProductServiceImpl implements EsProductService {
...
@@ -55,7 +56,7 @@ public class EsProductServiceImpl implements EsProductService {
@Override
@Override
public
int
importAll
()
{
public
int
importAll
()
{
List
<
EsProduct
>
esProductList
=
productDao
.
getAllEsProductList
(
null
);
List
<
EsProduct
>
esProductList
=
productDao
.
getAllEsProductList
(
null
);
Iterable
<
EsProduct
>
esProductIterable
=
productRepository
.
save
(
esProductList
);
Iterable
<
EsProduct
>
esProductIterable
=
productRepository
.
save
All
(
esProductList
);
Iterator
<
EsProduct
>
iterator
=
esProductIterable
.
iterator
();
Iterator
<
EsProduct
>
iterator
=
esProductIterable
.
iterator
();
int
result
=
0
;
int
result
=
0
;
while
(
iterator
.
hasNext
())
{
while
(
iterator
.
hasNext
())
{
...
@@ -67,7 +68,7 @@ public class EsProductServiceImpl implements EsProductService {
...
@@ -67,7 +68,7 @@ public class EsProductServiceImpl implements EsProductService {
@Override
@Override
public
void
delete
(
Long
id
)
{
public
void
delete
(
Long
id
)
{
productRepository
.
delete
(
id
);
productRepository
.
delete
ById
(
id
);
}
}
@Override
@Override
...
@@ -90,19 +91,19 @@ public class EsProductServiceImpl implements EsProductService {
...
@@ -90,19 +91,19 @@ public class EsProductServiceImpl implements EsProductService {
esProduct
.
setId
(
id
);
esProduct
.
setId
(
id
);
esProductList
.
add
(
esProduct
);
esProductList
.
add
(
esProduct
);
}
}
productRepository
.
delete
(
esProductList
);
productRepository
.
delete
All
(
esProductList
);
}
}
}
}
@Override
@Override
public
Page
<
EsProduct
>
search
(
String
keyword
,
Integer
pageNum
,
Integer
pageSize
)
{
public
Page
<
EsProduct
>
search
(
String
keyword
,
Integer
pageNum
,
Integer
pageSize
)
{
Pageable
pageable
=
new
PageRequest
(
pageNum
,
pageSize
);
Pageable
pageable
=
PageRequest
.
of
(
pageNum
,
pageSize
);
return
productRepository
.
findByNameOrSubTitleOrKeywords
(
keyword
,
keyword
,
keyword
,
pageable
);
return
productRepository
.
findByNameOrSubTitleOrKeywords
(
keyword
,
keyword
,
keyword
,
pageable
);
}
}
@Override
@Override
public
Page
<
EsProduct
>
search
(
String
keyword
,
Long
brandId
,
Long
productCategoryId
,
Integer
pageNum
,
Integer
pageSize
,
Integer
sort
)
{
public
Page
<
EsProduct
>
search
(
String
keyword
,
Long
brandId
,
Long
productCategoryId
,
Integer
pageNum
,
Integer
pageSize
,
Integer
sort
)
{
Pageable
pageable
=
new
PageRequest
(
pageNum
,
pageSize
);
Pageable
pageable
=
PageRequest
.
of
(
pageNum
,
pageSize
);
NativeSearchQueryBuilder
nativeSearchQueryBuilder
=
new
NativeSearchQueryBuilder
();
NativeSearchQueryBuilder
nativeSearchQueryBuilder
=
new
NativeSearchQueryBuilder
();
//分页
//分页
nativeSearchQueryBuilder
.
withPageable
(
pageable
);
nativeSearchQueryBuilder
.
withPageable
(
pageable
);
...
@@ -117,19 +118,32 @@ public class EsProductServiceImpl implements EsProductService {
...
@@ -117,19 +118,32 @@ public class EsProductServiceImpl implements EsProductService {
}
}
nativeSearchQueryBuilder
.
withFilter
(
boolQueryBuilder
);
nativeSearchQueryBuilder
.
withFilter
(
boolQueryBuilder
);
}
}
//elasticsearch2.4.6的用法
// FunctionScoreQueryBuilder functionScoreQueryBuilder = QueryBuilders.functionScoreQuery()
// .add(QueryBuilders.matchQuery("name", keyword),
// ScoreFunctionBuilders.weightFactorFunction(10))
// .add(QueryBuilders.matchQuery("subTitle", keyword),
// ScoreFunctionBuilders.weightFactorFunction(5))
// .add(QueryBuilders.matchQuery("keywords", keyword),
// ScoreFunctionBuilders.weightFactorFunction(2))
// .scoreMode("sum")
// .setMinScore(2);
//搜索
//搜索
FunctionScoreQueryBuilder
functionScoreQueryBuilder
=
QueryBuilders
.
functionScoreQuery
()
.
add
(
QueryBuilders
.
matchQuery
(
"name"
,
keyword
),
ScoreFunctionBuilders
.
weightFactorFunction
(
10
))
.
add
(
QueryBuilders
.
matchQuery
(
"subTitle"
,
keyword
),
ScoreFunctionBuilders
.
weightFactorFunction
(
5
))
.
add
(
QueryBuilders
.
matchQuery
(
"keywords"
,
keyword
),
ScoreFunctionBuilders
.
weightFactorFunction
(
2
))
.
scoreMode
(
"sum"
)
.
setMinScore
(
2
);
if
(
StringUtils
.
isEmpty
(
keyword
))
{
if
(
StringUtils
.
isEmpty
(
keyword
))
{
nativeSearchQueryBuilder
.
withQuery
(
QueryBuilders
.
matchAllQuery
());
nativeSearchQueryBuilder
.
withQuery
(
QueryBuilders
.
matchAllQuery
());
}
else
{
}
else
{
List
<
FunctionScoreQueryBuilder
.
FilterFunctionBuilder
>
filterFunctionBuilders
=
new
ArrayList
<>();
filterFunctionBuilders
.
add
(
new
FunctionScoreQueryBuilder
.
FilterFunctionBuilder
(
QueryBuilders
.
matchQuery
(
"name"
,
keyword
),
ScoreFunctionBuilders
.
weightFactorFunction
(
10
)));
filterFunctionBuilders
.
add
(
new
FunctionScoreQueryBuilder
.
FilterFunctionBuilder
(
QueryBuilders
.
matchQuery
(
"subTitle"
,
keyword
),
ScoreFunctionBuilders
.
weightFactorFunction
(
5
)));
filterFunctionBuilders
.
add
(
new
FunctionScoreQueryBuilder
.
FilterFunctionBuilder
(
QueryBuilders
.
matchQuery
(
"keywords"
,
keyword
),
ScoreFunctionBuilders
.
weightFactorFunction
(
2
)));
FunctionScoreQueryBuilder
.
FilterFunctionBuilder
[]
builders
=
new
FunctionScoreQueryBuilder
.
FilterFunctionBuilder
[
filterFunctionBuilders
.
size
()];
filterFunctionBuilders
.
toArray
(
builders
);
FunctionScoreQueryBuilder
functionScoreQueryBuilder
=
QueryBuilders
.
functionScoreQuery
(
builders
)
.
scoreMode
(
FunctionScoreQuery
.
ScoreMode
.
SUM
)
.
setMinScore
(
2
);
nativeSearchQueryBuilder
.
withQuery
(
functionScoreQueryBuilder
);
nativeSearchQueryBuilder
.
withQuery
(
functionScoreQueryBuilder
);
}
}
//排序
//排序
...
@@ -157,7 +171,7 @@ public class EsProductServiceImpl implements EsProductService {
...
@@ -157,7 +171,7 @@ public class EsProductServiceImpl implements EsProductService {
@Override
@Override
public
Page
<
EsProduct
>
recommend
(
Long
id
,
Integer
pageNum
,
Integer
pageSize
)
{
public
Page
<
EsProduct
>
recommend
(
Long
id
,
Integer
pageNum
,
Integer
pageSize
)
{
Pageable
pageable
=
new
PageRequest
(
pageNum
,
pageSize
);
Pageable
pageable
=
PageRequest
.
of
(
pageNum
,
pageSize
);
List
<
EsProduct
>
esProductList
=
productDao
.
getAllEsProductList
(
id
);
List
<
EsProduct
>
esProductList
=
productDao
.
getAllEsProductList
(
id
);
if
(
esProductList
.
size
()
>
0
)
{
if
(
esProductList
.
size
()
>
0
)
{
EsProduct
esProduct
=
esProductList
.
get
(
0
);
EsProduct
esProduct
=
esProductList
.
get
(
0
);
...
@@ -165,13 +179,30 @@ public class EsProductServiceImpl implements EsProductService {
...
@@ -165,13 +179,30 @@ public class EsProductServiceImpl implements EsProductService {
Long
brandId
=
esProduct
.
getBrandId
();
Long
brandId
=
esProduct
.
getBrandId
();
Long
productCategoryId
=
esProduct
.
getProductCategoryId
();
Long
productCategoryId
=
esProduct
.
getProductCategoryId
();
//根据商品标题、品牌、分类进行搜索
//根据商品标题、品牌、分类进行搜索
FunctionScoreQueryBuilder
functionScoreQueryBuilder
=
QueryBuilders
.
functionScoreQuery
()
//elasticsearch2.4.6的用法
.
add
(
QueryBuilders
.
matchQuery
(
"name"
,
keyword
),
ScoreFunctionBuilders
.
weightFactorFunction
(
8
))
// FunctionScoreQueryBuilder functionScoreQueryBuilder = QueryBuilders.functionScoreQuery()
.
add
(
QueryBuilders
.
matchQuery
(
"subTitle"
,
keyword
),
ScoreFunctionBuilders
.
weightFactorFunction
(
2
))
// .add(QueryBuilders.matchQuery("name",keyword),ScoreFunctionBuilders.weightFactorFunction(8))
.
add
(
QueryBuilders
.
matchQuery
(
"keywords"
,
keyword
),
ScoreFunctionBuilders
.
weightFactorFunction
(
2
))
// .add(QueryBuilders.matchQuery("subTitle",keyword),ScoreFunctionBuilders.weightFactorFunction(2))
.
add
(
QueryBuilders
.
termQuery
(
"brandId"
,
brandId
),
ScoreFunctionBuilders
.
weightFactorFunction
(
10
))
// .add(QueryBuilders.matchQuery("keywords",keyword),ScoreFunctionBuilders.weightFactorFunction(2))
.
add
(
QueryBuilders
.
matchQuery
(
"productCategoryId"
,
productCategoryId
),
ScoreFunctionBuilders
.
weightFactorFunction
(
6
))
// .add(QueryBuilders.termQuery("brandId",brandId),ScoreFunctionBuilders.weightFactorFunction(10))
.
scoreMode
(
"sum"
)
// .add(QueryBuilders.matchQuery("productCategoryId",productCategoryId),ScoreFunctionBuilders.weightFactorFunction(6))
// .scoreMode("sum")
// .setMinScore(2);
List
<
FunctionScoreQueryBuilder
.
FilterFunctionBuilder
>
filterFunctionBuilders
=
new
ArrayList
<>();
filterFunctionBuilders
.
add
(
new
FunctionScoreQueryBuilder
.
FilterFunctionBuilder
(
QueryBuilders
.
matchQuery
(
"name"
,
keyword
),
ScoreFunctionBuilders
.
weightFactorFunction
(
8
)));
filterFunctionBuilders
.
add
(
new
FunctionScoreQueryBuilder
.
FilterFunctionBuilder
(
QueryBuilders
.
matchQuery
(
"subTitle"
,
keyword
),
ScoreFunctionBuilders
.
weightFactorFunction
(
2
)));
filterFunctionBuilders
.
add
(
new
FunctionScoreQueryBuilder
.
FilterFunctionBuilder
(
QueryBuilders
.
matchQuery
(
"keywords"
,
keyword
),
ScoreFunctionBuilders
.
weightFactorFunction
(
2
)));
filterFunctionBuilders
.
add
(
new
FunctionScoreQueryBuilder
.
FilterFunctionBuilder
(
QueryBuilders
.
matchQuery
(
"brandId"
,
brandId
),
ScoreFunctionBuilders
.
weightFactorFunction
(
10
)));
filterFunctionBuilders
.
add
(
new
FunctionScoreQueryBuilder
.
FilterFunctionBuilder
(
QueryBuilders
.
matchQuery
(
"productCategoryId"
,
productCategoryId
),
ScoreFunctionBuilders
.
weightFactorFunction
(
6
)));
FunctionScoreQueryBuilder
.
FilterFunctionBuilder
[]
builders
=
new
FunctionScoreQueryBuilder
.
FilterFunctionBuilder
[
filterFunctionBuilders
.
size
()];
filterFunctionBuilders
.
toArray
(
builders
);
FunctionScoreQueryBuilder
functionScoreQueryBuilder
=
QueryBuilders
.
functionScoreQuery
(
builders
)
.
scoreMode
(
FunctionScoreQuery
.
ScoreMode
.
SUM
)
.
setMinScore
(
2
);
.
setMinScore
(
2
);
NativeSearchQueryBuilder
builder
=
new
NativeSearchQueryBuilder
();
NativeSearchQueryBuilder
builder
=
new
NativeSearchQueryBuilder
();
builder
.
withQuery
(
functionScoreQueryBuilder
);
builder
.
withQuery
(
functionScoreQueryBuilder
);
...
@@ -197,10 +228,8 @@ public class EsProductServiceImpl implements EsProductService {
...
@@ -197,10 +228,8 @@ public class EsProductServiceImpl implements EsProductService {
//集合搜索分类名称
//集合搜索分类名称
builder
.
addAggregation
(
AggregationBuilders
.
terms
(
"productCategoryNames"
).
field
(
"productCategoryName"
));
builder
.
addAggregation
(
AggregationBuilders
.
terms
(
"productCategoryNames"
).
field
(
"productCategoryName"
));
//聚合搜索商品属性,去除type=1的属性
//聚合搜索商品属性,去除type=1的属性
AbstractAggregationBuilder
aggregationBuilder
=
AggregationBuilders
.
nested
(
"allAttrValues"
)
AbstractAggregationBuilder
aggregationBuilder
=
AggregationBuilders
.
nested
(
"allAttrValues"
,
"attrValueList"
)
.
path
(
"attrValueList"
)
.
subAggregation
(
AggregationBuilders
.
filter
(
"productAttrs"
,
QueryBuilders
.
termQuery
(
"attrValueList.type"
,
1
))
.
subAggregation
(
AggregationBuilders
.
filter
(
"productAttrs"
)
.
filter
(
QueryBuilders
.
termQuery
(
"attrValueList.type"
,
1
))
.
subAggregation
(
AggregationBuilders
.
terms
(
"attrIds"
)
.
subAggregation
(
AggregationBuilders
.
terms
(
"attrIds"
)
.
field
(
"attrValueList.productAttributeId"
)
.
field
(
"attrValueList.productAttributeId"
)
.
subAggregation
(
AggregationBuilders
.
terms
(
"attrValues"
)
.
subAggregation
(
AggregationBuilders
.
terms
(
"attrValues"
)
...
@@ -224,38 +253,38 @@ public class EsProductServiceImpl implements EsProductService {
...
@@ -224,38 +253,38 @@ public class EsProductServiceImpl implements EsProductService {
//设置品牌
//设置品牌
Aggregation
brandNames
=
aggregationMap
.
get
(
"brandNames"
);
Aggregation
brandNames
=
aggregationMap
.
get
(
"brandNames"
);
List
<
String
>
brandNameList
=
new
ArrayList
<>();
List
<
String
>
brandNameList
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<((
String
Terms
)
brandNames
).
getBuckets
().
size
();
i
++){
for
(
int
i
=
0
;
i
<((
Terms
)
brandNames
).
getBuckets
().
size
();
i
++){
brandNameList
.
add
(((
String
Terms
)
brandNames
).
getBuckets
().
get
(
i
).
getKeyAsString
());
brandNameList
.
add
(((
Terms
)
brandNames
).
getBuckets
().
get
(
i
).
getKeyAsString
());
}
}
productRelatedInfo
.
setBrandNames
(
brandNameList
);
productRelatedInfo
.
setBrandNames
(
brandNameList
);
//设置分类
//设置分类
Aggregation
productCategoryNames
=
aggregationMap
.
get
(
"productCategoryNames"
);
Aggregation
productCategoryNames
=
aggregationMap
.
get
(
"productCategoryNames"
);
List
<
String
>
productCategoryNameList
=
new
ArrayList
<>();
List
<
String
>
productCategoryNameList
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<((
String
Terms
)
productCategoryNames
).
getBuckets
().
size
();
i
++){
for
(
int
i
=
0
;
i
<((
Terms
)
productCategoryNames
).
getBuckets
().
size
();
i
++){
productCategoryNameList
.
add
(((
String
Terms
)
productCategoryNames
).
getBuckets
().
get
(
i
).
getKeyAsString
());
productCategoryNameList
.
add
(((
Terms
)
productCategoryNames
).
getBuckets
().
get
(
i
).
getKeyAsString
());
}
}
productRelatedInfo
.
setProductCategoryNames
(
productCategoryNameList
);
productRelatedInfo
.
setProductCategoryNames
(
productCategoryNameList
);
//设置参数
//设置参数
Aggregation
productAttrs
=
aggregationMap
.
get
(
"allAttrValues"
);
Aggregation
productAttrs
=
aggregationMap
.
get
(
"allAttrValues"
);
List
<
Terms
.
Bucket
>
attrIds
=
((
LongTerms
)
((
InternalFilter
)
productAttrs
.
getProperty
(
"productAttrs"
)).
getAggregations
().
getProperty
(
"attrIds"
)).
getBuckets
();
//
List<Terms.Bucket> attrIds = ((LongTerms) ((InternalFilter)productAttrs.getProperty("productAttrs")).getAggregations().getProperty("attrIds")).getBuckets();
List
<
EsProductRelatedInfo
.
ProductAttr
>
attrList
=
new
ArrayList
<>();
//
List<EsProductRelatedInfo.ProductAttr> attrList = new ArrayList<>();
for
(
Terms
.
Bucket
attrId
:
attrIds
)
{
//
for (Terms.Bucket attrId : attrIds) {
EsProductRelatedInfo
.
ProductAttr
attr
=
new
EsProductRelatedInfo
.
ProductAttr
();
//
EsProductRelatedInfo.ProductAttr attr = new EsProductRelatedInfo.ProductAttr();
attr
.
setAttrId
((
Long
)
attrId
.
getKey
());
//
attr.setAttrId((Long) attrId.getKey());
List
<
String
>
attrValueList
=
new
ArrayList
<>();
//
List<String> attrValueList = new ArrayList<>();
List
<
Terms
.
Bucket
>
attrValues
=
((
StringTerms
)
attrId
.
getAggregations
().
get
(
"attrValues"
)).
getBuckets
();
//
List<Terms.Bucket> attrValues = ((StringTerms) attrId.getAggregations().get("attrValues")).getBuckets();
List
<
Terms
.
Bucket
>
attrNames
=
((
StringTerms
)
attrId
.
getAggregations
().
get
(
"attrNames"
)).
getBuckets
();
//
List<Terms.Bucket> attrNames = ((StringTerms) attrId.getAggregations().get("attrNames")).getBuckets();
for
(
Terms
.
Bucket
attrValue
:
attrValues
)
{
//
for (Terms.Bucket attrValue : attrValues) {
attrValueList
.
add
(
attrValue
.
getKeyAsString
());
//
attrValueList.add(attrValue.getKeyAsString());
}
//
}
attr
.
setAttrValues
(
attrValueList
);
//
attr.setAttrValues(attrValueList);
if
(!
CollectionUtils
.
isEmpty
(
attrNames
)){
//
if(!CollectionUtils.isEmpty(attrNames)){
String
attrName
=
attrNames
.
get
(
0
).
getKeyAsString
();
//
String attrName = attrNames.get(0).getKeyAsString();
attr
.
setAttrName
(
attrName
);
//
attr.setAttrName(attrName);
}
//
}
attrList
.
add
(
attr
);
//
attrList.add(attr);
}
//
}
productRelatedInfo
.
setProductAttrs
(
attrList
);
//
productRelatedInfo.setProductAttrs(attrList);
return
productRelatedInfo
;
return
productRelatedInfo
;
}
}
}
}
mall-search/src/main/resources/application-dev.properties
View file @
c3359c9f
#===datasource start===
#===datasource start===
spring.datasource.url
=
jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8
spring.datasource.url
=
jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8
&serverTimezone=GMT%2B8
spring.datasource.username
=
root
spring.datasource.username
=
root
spring.datasource.password
=
root
spring.datasource.password
=
root
#===datasource end===
#===datasource end===
...
...
Prev
1
2
Next
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