Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
项目统一框架
amos-boot-biz
Commits
c286b52f
Commit
c286b52f
authored
Jul 15, 2025
by
hcing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:统计服务,大屏综合统计查询接口-人员相关
parent
4dcd9ab2
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
224 additions
and
110 deletions
+224
-110
UnitTypeEnum.java
...n/amos/boot/module/statistics/api/enums/UnitTypeEnum.java
+3
-1
ComprehensiveStatisticalAnalysisServiceImpl.java
...ice/impl/ComprehensiveStatisticalAnalysisServiceImpl.java
+193
-109
QueryBuilderUtils.java
...os/boot/module/statistcs/biz/utils/QueryBuilderUtils.java
+28
-0
No files found.
amos-boot-system-tzs/amos-boot-module-statistics/amos-boot-module-statistics-api/src/main/java/com/yeejoin/amos/boot/module/statistics/api/enums/UnitTypeEnum.java
View file @
c286b52f
...
...
@@ -23,7 +23,9 @@ public enum UnitTypeEnum {
azgzwxdw
(
"安装改造维修单位"
,
"1234"
,
"license"
),
zzdw
(
"制造单位"
,
"1236"
,
"license"
),
sjdw
(
"设计单位"
,
"1235"
,
"license"
),
grzt
(
"个人主体"
,
"6599"
,
"use"
);
grzt
(
"个人主体"
,
"6599"
,
"use"
),
jyjg
(
"检验机构"
,
"1233-1"
,
"license"
),
jcjg
(
"检测机构"
,
"1233-2"
,
"license"
);
private
String
name
;
private
String
code
;
...
...
amos-boot-system-tzs/amos-boot-module-statistics/amos-boot-module-statistics-biz/src/main/java/com/yeejoin/amos/boot/module/statistcs/biz/service/impl/ComprehensiveStatisticalAnalysisServiceImpl.java
View file @
c286b52f
...
...
@@ -261,9 +261,125 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
JSONObject
filterParams
=
null
;
if
(!
ObjectUtils
.
isEmpty
(
filter
.
get
(
"filterParams"
)))
{
filterParams
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
filter
.
get
(
"filterParams"
)));
String
filterType
=
filter
.
getString
(
"filterType"
);
String
filterType
=
"advanced"
;
// 组装人员过滤条件
this
.
getPersonBoolQueryBuilder
(
filterParams
,
boolMust
,
filterType
);
}
// 组装人员排序条件
this
.
getPersonBoolQuerySort
(
filter
,
builder
);
builder
.
query
(
boolMust
);
builder
.
from
((
current
-
1
)
*
size
);
builder
.
size
(
size
);
request
.
source
(
builder
);
List
<
JSONObject
>
list
=
new
LinkedList
<>();
long
totle
=
0
;
try
{
SearchResponse
response
=
restHighLevelClient
.
search
(
request
,
RequestOptions
.
DEFAULT
);
for
(
SearchHit
hit
:
response
.
getHits
().
getHits
())
{
JSONObject
jsonObject
=
(
JSONObject
)
JSONObject
.
toJSON
(
hit
);
JSONObject
dto
=
jsonObject
.
getJSONObject
(
"sourceAsMap"
);
if
(
dto
.
containsKey
(
"identification"
)
&&
!
ObjectUtils
.
isEmpty
(
dto
.
get
(
"identification"
)))
{
JSONArray
jsonArray
=
JSONObject
.
parseArray
(
dto
.
get
(
"identification"
).
toString
());
if
(!
ObjectUtils
.
isEmpty
(
jsonArray
))
{
dto
.
put
(
"identification"
,
JSONObject
.
parseObject
(
JSONObject
.
parseArray
(
dto
.
get
(
"identification"
).
toString
()).
get
(
0
).
toString
()).
get
(
"url"
));
}
}
if
(
dto
.
containsKey
(
"equipType"
))
{
String
[]
equipCodes
=
dto
.
get
(
"equipType"
).
toString
().
split
(
","
);
StringBuilder
equipTypes
=
new
StringBuilder
();
for
(
String
equipType
:
equipCodes
)
{
equipTypes
.
append
(
EquipmentClassifityEnum
.
getNameByCode
(
equipType
)
+
","
);
}
dto
.
put
(
"equipType"
,
equipTypes
.
substring
(
0
,
equipTypes
.
length
()
-
1
));
}
StringBuilder
licensesStatus
=
new
StringBuilder
();
if
(
dto
.
containsKey
(
"licenses"
))
{
// 以下人员类型有资质要求
// 人员类型(newPost):检验人员:66151、检测人员:66152、作业人员:6552、检查人员:6763
// 人员子类型(subPost): 持证人员:6713、持证人员(P):6764、持证人员(R2):6765
String
newPost
=
ObjectUtils
.
isEmpty
(
dto
.
getString
(
"newPost"
))
?
""
:
dto
.
getString
(
"newPost"
);
String
subPost
=
ObjectUtils
.
isEmpty
(
dto
.
getString
(
"subPost"
))
?
""
:
dto
.
getString
(
"subPost"
);
if
(
newPost
.
contains
(
"66151"
)
||
newPost
.
contains
(
"66152"
)
||
newPost
.
contains
(
"6763"
)
||
newPost
.
contains
(
"6552"
)
||
subPost
.
contains
(
"6713"
)
||
subPost
.
contains
(
"6764"
)
||
subPost
.
contains
(
"6765"
))
{
JSONArray
licenses
=
dto
.
getJSONArray
(
"licenses"
);
if
(!
ObjectUtils
.
isEmpty
(
licenses
))
{
List
<
String
>
permissionStatusList
=
new
ArrayList
<>();
for
(
Object
object
:
licenses
)
{
JSONObject
json
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
object
));
if
(!
json
.
containsKey
(
"expiryDate"
))
{
licensesStatus
.
append
(
"/无有效期"
);
continue
;
}
String
expiryDate
=
json
.
getString
(
"expiryDate"
);
if
(!
ObjectUtils
.
isEmpty
(
expiryDate
))
{
long
daysBetween
=
ChronoUnit
.
DAYS
.
between
(
LocalDate
.
now
(),
LocalDate
.
parse
(
expiryDate
,
formatter
));
if
(
daysBetween
<=
0
)
{
permissionStatusList
.
add
(
"超期"
);
}
else
if
(
daysBetween
<=
30
)
{
permissionStatusList
.
add
(
"临期"
);
}
else
{
permissionStatusList
.
add
(
"正常"
);
}
}
}
long
cq
=
permissionStatusList
.
stream
().
filter
(
e
->
e
.
equals
(
"超期"
)).
count
();
long
lq
=
permissionStatusList
.
stream
().
filter
(
e
->
e
.
equals
(
"临期"
)).
count
();
long
zc
=
permissionStatusList
.
stream
().
filter
(
e
->
e
.
equals
(
"正常"
)).
count
();
long
no
=
permissionStatusList
.
stream
().
filter
(
e
->
e
.
equals
(
"无有效期"
)).
count
();
if
(
cq
>
0
)
{
licensesStatus
.
append
(
"/资质超期"
);
}
if
(
lq
>
0
)
{
licensesStatus
.
append
(
"/资质临期"
);
}
if
(
zc
>
0
)
{
licensesStatus
.
append
(
"/资质正常"
);
}
if
(
no
>
0
)
{
licensesStatus
.
append
(
"/无有效期"
);
}
}
else
{
licensesStatus
.
append
(
"无资质"
);
}
}
else
{
licensesStatus
.
append
(
"无资质要求"
);
}
}
String
licensesStatusStr
=
licensesStatus
.
toString
();
licensesStatusStr
=
licensesStatusStr
.
startsWith
(
"/"
)
?
licensesStatusStr
.
substring
(
1
)
:
licensesStatusStr
;
licensesStatusStr
=
licensesStatusStr
.
endsWith
(
"/"
)
?
licensesStatusStr
.
substring
(
0
,
licensesStatusStr
.
length
()
-
1
)
:
licensesStatusStr
;
dto
.
put
(
"licensesStatus"
,
licensesStatusStr
);
list
.
add
(
dto
);
}
totle
=
Objects
.
requireNonNull
(
response
.
getInternalResponse
().
hits
().
getTotalHits
()).
value
;
page
.
setRecords
(
list
);
page
.
setTotal
(
totle
);
result
.
put
(
"pageData"
,
page
);
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
List
<
Map
<
String
,
Object
>>
statics
=
new
ArrayList
<>();
Map
<
String
,
Object
>
sum
=
new
HashMap
<>();
sum
.
put
(
"name"
,
"人员总数(人)"
);
sum
.
put
(
"value"
,
totle
);
statics
.
add
(
sum
);
result
.
put
(
"statics"
,
statics
);
// 获取许可状态统计
List
<
Map
<
String
,
Object
>>
staticMap
=
new
ArrayList
<>();
getCompanyOrPersonPermitStatusStatic
(
boolMust
,
staticMap
,
StatisticalAnalysisEnum
.
person
.
getKey
());
result
.
put
(
"keyIndicator"
,
staticMap
);
return
result
;
}
/**
* 组装人员过滤条件
*/
private
void
getPersonBoolQueryBuilder
(
JSONObject
filterParams
,
BoolQueryBuilder
boolMust
,
String
filterType
)
{
deleteUnitCategory
(
filterParams
);
//
快捷筛选和自定义筛选解析筛选规则不一致
//
快捷筛选和自定义筛选解析筛选规则不一致
if
(
filterType
.
equals
(
"advanced"
))
{
filterParams
.
forEach
((
k
,
v
)
->
{
if
(
v
instanceof
JSONArray
)
{
...
...
@@ -360,7 +476,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
}
else
if
(
item
.
equals
(
"none"
))
{
NestedQueryBuilder
nestedQuery
=
QueryBuilders
.
nestedQuery
(
path
,
QueryBuilders
.
boolQuery
().
must
(
QueryBuilders
.
existsQuery
(
nestedField
)),
QueryBuilders
.
boolQuery
().
must
(
existsQuery
(
nestedField
)),
ScoreMode
.
None
);
enhancedDynamicQueryBuilder
.
add
(
nestedQuery
,
or
);
...
...
@@ -424,6 +540,11 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
handleAdvancedFilter
(
boolMust
,
leftGroup
,
rightGroup
,
isOrGroup
);
}
}
/**
* 组装人员排序
*/
private
void
getPersonBoolQuerySort
(
JSONObject
filter
,
SearchSourceBuilder
builder
)
{
// 排序
if
(!
ObjectUtils
.
isEmpty
(
filter
.
get
(
"sort"
)))
{
JSONObject
sort
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
filter
.
get
(
"sort"
)));
...
...
@@ -437,110 +558,6 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
}
builder
.
sort
(
field
,
sort
.
getString
(
"order"
).
equals
(
"desc"
)
?
SortOrder
.
DESC
:
SortOrder
.
ASC
);
}
builder
.
query
(
boolMust
);
builder
.
from
((
current
-
1
)
*
size
);
builder
.
size
(
size
);
request
.
source
(
builder
);
List
<
JSONObject
>
list
=
new
LinkedList
<>();
long
totle
=
0
;
try
{
SearchResponse
response
=
restHighLevelClient
.
search
(
request
,
RequestOptions
.
DEFAULT
);
for
(
SearchHit
hit
:
response
.
getHits
().
getHits
())
{
JSONObject
jsonObject
=
(
JSONObject
)
JSONObject
.
toJSON
(
hit
);
JSONObject
dto
=
jsonObject
.
getJSONObject
(
"sourceAsMap"
);
if
(
dto
.
containsKey
(
"identification"
)
&&
!
ObjectUtils
.
isEmpty
(
dto
.
get
(
"identification"
)))
{
JSONArray
jsonArray
=
JSONObject
.
parseArray
(
dto
.
get
(
"identification"
).
toString
());
if
(!
ObjectUtils
.
isEmpty
(
jsonArray
))
{
dto
.
put
(
"identification"
,
JSONObject
.
parseObject
(
JSONObject
.
parseArray
(
dto
.
get
(
"identification"
).
toString
()).
get
(
0
).
toString
()).
get
(
"url"
));
}
}
if
(
dto
.
containsKey
(
"equipType"
))
{
String
[]
equipCodes
=
dto
.
get
(
"equipType"
).
toString
().
split
(
","
);
StringBuilder
equipTypes
=
new
StringBuilder
();
for
(
String
equipType
:
equipCodes
)
{
equipTypes
.
append
(
EquipmentClassifityEnum
.
getNameByCode
(
equipType
)
+
","
);
}
dto
.
put
(
"equipType"
,
equipTypes
.
substring
(
0
,
equipTypes
.
length
()
-
1
));
}
StringBuilder
licensesStatus
=
new
StringBuilder
();
if
(
dto
.
containsKey
(
"licenses"
))
{
// 以下人员类型有资质要求
// 人员类型(newPost):检验人员:66151、检测人员:66152、作业人员:6552、检查人员:6763
// 人员子类型(subPost): 持证人员:6713、持证人员(P):6764、持证人员(R2):6765
String
newPost
=
ObjectUtils
.
isEmpty
(
dto
.
getString
(
"newPost"
))
?
""
:
dto
.
getString
(
"newPost"
);
String
subPost
=
ObjectUtils
.
isEmpty
(
dto
.
getString
(
"subPost"
))
?
""
:
dto
.
getString
(
"subPost"
);
if
(
newPost
.
contains
(
"66151"
)
||
newPost
.
contains
(
"66152"
)
||
newPost
.
contains
(
"6763"
)
||
newPost
.
contains
(
"6552"
)
||
subPost
.
contains
(
"6713"
)
||
subPost
.
contains
(
"6764"
)
||
subPost
.
contains
(
"6765"
))
{
JSONArray
licenses
=
dto
.
getJSONArray
(
"licenses"
);
if
(!
ObjectUtils
.
isEmpty
(
licenses
))
{
List
<
String
>
permissionStatusList
=
new
ArrayList
<>();
for
(
Object
object
:
licenses
)
{
JSONObject
json
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
object
));
if
(!
json
.
containsKey
(
"expiryDate"
))
{
licensesStatus
.
append
(
"/无有效期"
);
continue
;
}
String
expiryDate
=
json
.
getString
(
"expiryDate"
);
if
(!
ObjectUtils
.
isEmpty
(
expiryDate
))
{
long
daysBetween
=
ChronoUnit
.
DAYS
.
between
(
LocalDate
.
now
(),
LocalDate
.
parse
(
expiryDate
,
formatter
));
if
(
daysBetween
<=
0
)
{
permissionStatusList
.
add
(
"超期"
);
}
else
if
(
daysBetween
<=
30
)
{
permissionStatusList
.
add
(
"临期"
);
}
else
{
permissionStatusList
.
add
(
"正常"
);
}
}
}
long
cq
=
permissionStatusList
.
stream
().
filter
(
e
->
e
.
equals
(
"超期"
)).
count
();
long
lq
=
permissionStatusList
.
stream
().
filter
(
e
->
e
.
equals
(
"临期"
)).
count
();
long
zc
=
permissionStatusList
.
stream
().
filter
(
e
->
e
.
equals
(
"正常"
)).
count
();
long
no
=
permissionStatusList
.
stream
().
filter
(
e
->
e
.
equals
(
"无有效期"
)).
count
();
if
(
cq
>
0
)
{
licensesStatus
.
append
(
"/资质超期"
);
}
if
(
lq
>
0
)
{
licensesStatus
.
append
(
"/资质临期"
);
}
if
(
zc
>
0
)
{
licensesStatus
.
append
(
"/资质正常"
);
}
if
(
no
>
0
)
{
licensesStatus
.
append
(
"/无有效期"
);
}
}
else
{
licensesStatus
.
append
(
"无资质"
);
}
}
else
{
licensesStatus
.
append
(
"无资质要求"
);
}
}
String
licensesStatusStr
=
licensesStatus
.
toString
();
licensesStatusStr
=
licensesStatusStr
.
startsWith
(
"/"
)
?
licensesStatusStr
.
substring
(
1
)
:
licensesStatusStr
;
licensesStatusStr
=
licensesStatusStr
.
endsWith
(
"/"
)
?
licensesStatusStr
.
substring
(
0
,
licensesStatusStr
.
length
()
-
1
)
:
licensesStatusStr
;
dto
.
put
(
"licensesStatus"
,
licensesStatusStr
);
list
.
add
(
dto
);
}
totle
=
Objects
.
requireNonNull
(
response
.
getInternalResponse
().
hits
().
getTotalHits
()).
value
;
page
.
setRecords
(
list
);
page
.
setTotal
(
totle
);
result
.
put
(
"pageData"
,
page
);
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
List
<
Map
<
String
,
Object
>>
statics
=
new
ArrayList
<>();
Map
<
String
,
Object
>
sum
=
new
HashMap
<>();
sum
.
put
(
"name"
,
"人员总数(人)"
);
sum
.
put
(
"value"
,
totle
);
statics
.
add
(
sum
);
result
.
put
(
"statics"
,
statics
);
// 获取许可状态统计
List
<
Map
<
String
,
Object
>>
staticMap
=
new
ArrayList
<>();
getCompanyOrPersonPermitStatusStatic
(
boolMust
,
staticMap
,
StatisticalAnalysisEnum
.
person
.
getKey
());
result
.
put
(
"keyIndicator"
,
staticMap
);
return
result
;
}
private
JSONObject
queryCompanyPage
(
JSONObject
filter
,
Page
<
JSONObject
>
page
,
Integer
current
,
Integer
size
)
{
...
...
@@ -2668,8 +2685,75 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
}
private
List
<
Map
<
String
,
Object
>>
queryDpPersonStatistics
(
JSONObject
filter
,
SearchRequest
request
,
SearchSourceBuilder
builder
,
BoolQueryBuilder
boolMust
,
Map
<
String
,
Object
>
tabTotalMap
)
{
return
null
;
private
List
<
Map
<
String
,
Object
>>
queryDpPersonStatistics
(
JSONObject
filter
,
SearchRequest
request
,
SearchSourceBuilder
builder
,
BoolQueryBuilder
boolMust
,
Map
<
String
,
Object
>
tabTotalMap
)
{
JSONObject
filterParams
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
filter
.
get
(
"filterParams"
)));
String
filterType
=
"advanced"
;
// 组装人员过滤条件
this
.
getPersonBoolQueryBuilder
(
filterParams
,
boolMust
,
filterType
);
// 计算总数
long
personTotal
=
this
.
queryDpPersonStatisticsTotal
(
boolMust
);
// 聚合查询
builder
.
size
(
0
);
// 不返回任何文档,只返回聚合结果
String
aggName
=
"unit_types_split"
;
QueryBuilderUtils
.
buildSplitFieldAggCondition
(
builder
,
"unitType.keyword"
,
"#"
,
aggName
);
builder
.
query
(
boolMust
);
request
.
source
(
builder
);
Map
<
String
,
Object
>
result
=
new
HashMap
<>();
try
{
SearchResponse
searchResponse
=
restHighLevelClient
.
search
(
request
,
RequestOptions
.
DEFAULT
);
// 解析聚合结果
Terms
unitTypesTerms
=
searchResponse
.
getAggregations
().
get
(
aggName
);
if
(
unitTypesTerms
!=
null
)
{
for
(
Terms
.
Bucket
bucket
:
unitTypesTerms
.
getBuckets
())
{
if
(
bucket
.
getKeyAsString
().
equals
(
UnitTypeEnum
.
sydw
.
getName
()))
{
result
.
put
(
"sydw"
,
bucket
.
getDocCount
());
}
if
(
bucket
.
getKeyAsString
().
equals
(
UnitTypeEnum
.
grzt
.
getName
()))
{
result
.
put
(
"grzt"
,
bucket
.
getDocCount
());
}
if
(
bucket
.
getKeyAsString
().
equals
(
UnitTypeEnum
.
sjdw
.
getName
()))
{
result
.
put
(
"sjdw"
,
bucket
.
getDocCount
());
}
if
(
bucket
.
getKeyAsString
().
equals
(
UnitTypeEnum
.
zzdw
.
getName
()))
{
result
.
put
(
"zzdw"
,
bucket
.
getDocCount
());
}
if
(
bucket
.
getKeyAsString
().
equals
(
UnitTypeEnum
.
azgzwxdw
.
getName
()))
{
result
.
put
(
"azgzwxdw"
,
bucket
.
getDocCount
());
}
if
(
bucket
.
getKeyAsString
().
equals
(
UnitTypeEnum
.
czdw
.
getName
()))
{
result
.
put
(
"czdw"
,
bucket
.
getDocCount
());
}
if
(
bucket
.
getKeyAsString
().
equals
(
UnitTypeEnum
.
jyjg
.
getName
()))
{
result
.
put
(
"jyjg"
,
bucket
.
getDocCount
());
}
if
(
bucket
.
getKeyAsString
().
equals
(
UnitTypeEnum
.
jcjg
.
getName
()))
{
result
.
put
(
"jcjg"
,
bucket
.
getDocCount
());
}
}
}
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
e
);
}
// 汇总总数
tabTotalMap
.
put
(
StatisticalAnalysisEnum
.
person
.
getCode
(),
personTotal
);
return
Collections
.
singletonList
(
result
);
}
private
long
queryDpPersonStatisticsTotal
(
BoolQueryBuilder
boolMust
)
{
CountRequest
countRequest
=
new
CountRequest
();
countRequest
.
indices
(
StatisticalAnalysisEnum
.
person
.
getKey
());
countRequest
.
query
(
boolMust
);
CountResponse
countResponse
;
try
{
countResponse
=
restHighLevelClient
.
count
(
countRequest
,
RequestOptions
.
DEFAULT
);
}
catch
(
Exception
exception
)
{
throw
new
RuntimeException
(
exception
);
}
return
ObjectUtils
.
isEmpty
(
countResponse
)
?
0
:
countResponse
.
getCount
();
}
private
List
<
Map
<
String
,
Object
>>
queryDpCompanyStatistics
(
JSONObject
filter
,
SearchRequest
request
,
SearchSourceBuilder
builder
,
BoolQueryBuilder
boolMust
,
Map
<
String
,
Object
>
tabTotalMap
)
{
...
...
amos-boot-system-tzs/amos-boot-module-statistics/amos-boot-module-statistics-biz/src/main/java/com/yeejoin/amos/boot/module/statistcs/biz/utils/QueryBuilderUtils.java
View file @
c286b52f
...
...
@@ -2,6 +2,12 @@ package com.yeejoin.amos.boot.module.statistcs.biz.utils;
import
org.elasticsearch.index.query.BoolQueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.elasticsearch.script.Script
;
import
org.elasticsearch.script.ScriptType
;
import
org.elasticsearch.search.aggregations.AggregationBuilders
;
import
org.elasticsearch.search.builder.SearchSourceBuilder
;
import
java.util.Collections
;
public
class
QueryBuilderUtils
{
// 复制BoolQueryBuilder
...
...
@@ -29,4 +35,25 @@ public class QueryBuilderUtils {
return
copy
;
}
/**
* 组装分割符字段的聚合查询
*
* @param searchSourceBuilder es查询构造器
* @param field 需要查询的字段,如:unitType.keyword
* @param spiltSymbol 分割符号,如:#
* @param aggName 聚合名称,根据此名称从查询结果获取数据,如:Terms unitTypesTerms = searchResponse.getAggregations().get(aggName)
*/
public
static
void
buildSplitFieldAggCondition
(
SearchSourceBuilder
searchSourceBuilder
,
String
field
,
String
spiltSymbol
,
String
aggName
)
{
// Painless 脚本内容
String
scriptSource
=
"if (doc['"
+
field
+
"'].size() > 0) {"
+
" String value = doc['"
+
field
+
"'].value;"
+
" if (value != null && !value.isEmpty()) {"
+
" return value.splitOnToken('"
+
spiltSymbol
+
"');"
+
" }"
+
"}"
+
"return [];"
;
Script
script
=
new
Script
(
ScriptType
.
INLINE
,
"painless"
,
scriptSource
,
Collections
.
emptyMap
());
searchSourceBuilder
.
aggregation
(
AggregationBuilders
.
terms
(
aggName
).
script
(
script
));
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
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