|
@@ -530,18 +530,27 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
|
|
SearchResponse<Patent> response = client.search(builder.build(), Patent.class);
|
|
Aggregate totalAgg = response.aggregations().get("totalAgg");
|
|
Aggregate totalAgg = response.aggregations().get("totalAgg");
|
|
Aggregate totalAggregate = totalAgg.nested().aggregations().get("statsBucket");
|
|
Aggregate totalAggregate = totalAgg.nested().aggregations().get("statsBucket");
|
|
|
|
+ Aggregate totalAgg1 = response.aggregations().get("totalAgg1");
|
|
|
|
+ Aggregate totalAggregate1 = totalAgg1.nested().aggregations().get("statsBucket1");
|
|
long total = totalAggregate.statsBucket().count();
|
|
long total = totalAggregate.statsBucket().count();
|
|
|
|
+ if (type == 0) {
|
|
|
|
+ long count = totalAggregate1.statsBucket().count();
|
|
|
|
+ total = Math.max(total, count);
|
|
|
|
+ }
|
|
|
|
|
|
List<String> mergeList = new ArrayList<>();
|
|
List<String> mergeList = new ArrayList<>();
|
|
if (StringUtils.isNotEmpty(condition)) {
|
|
if (StringUtils.isNotEmpty(condition)) {
|
|
Aggregate terms = totalAgg.nested().aggregations().get("terms");
|
|
Aggregate terms = totalAgg.nested().aggregations().get("terms");
|
|
|
|
+ Aggregate terms1 = totalAgg1.nested().aggregations().get("terms1");
|
|
List<StringTermsBucket> termsBucketList = terms.sterms().buckets().array();
|
|
List<StringTermsBucket> termsBucketList = terms.sterms().buckets().array();
|
|
|
|
+ List<StringTermsBucket> termsBucketList1 = terms1.sterms().buckets().array();
|
|
|
|
+ termsBucketList.addAll(termsBucketList1);
|
|
if (condition.contains("AND") && operate.equals("AND")) {
|
|
if (condition.contains("AND") && operate.equals("AND")) {
|
|
String[] parts = condition.split(" AND ");
|
|
String[] parts = condition.split(" AND ");
|
|
for (String part : parts) {
|
|
for (String part : parts) {
|
|
List<String> expresses = getConditionExpress(part);
|
|
List<String> expresses = getConditionExpress(part);
|
|
List<String> merges = termsBucketList.stream().map(StringTermsBucket::key).map(FieldValue::stringValue)
|
|
List<String> merges = termsBucketList.stream().map(StringTermsBucket::key).map(FieldValue::stringValue)
|
|
- .filter(value -> expresses.stream().anyMatch(express -> value.contains(express)))
|
|
|
|
|
|
+ .distinct().filter(value -> expresses.stream().anyMatch(express -> value.contains(express)))
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
total = total > merges.size() ? merges.size() : total;
|
|
total = total > merges.size() ? merges.size() : total;
|
|
merges = merges.stream().skip((pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
|
|
merges = merges.stream().skip((pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
|
|
@@ -650,18 +659,27 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
Aggregate agg = response.aggregations().get("Agg");
|
|
Aggregate agg = response.aggregations().get("Agg");
|
|
Aggregate nestedAgg = agg.nested().aggregations().get("nestedAgg");
|
|
Aggregate nestedAgg = agg.nested().aggregations().get("nestedAgg");
|
|
List<StringTermsBucket> buckets = nestedAgg.sterms().buckets().array();
|
|
List<StringTermsBucket> buckets = nestedAgg.sterms().buckets().array();
|
|
- for (StringTermsBucket bucket : buckets) {
|
|
|
|
- String value = bucket.key().stringValue();
|
|
|
|
- mergeList.add(value);
|
|
|
|
- }
|
|
|
|
Aggregate rightAgg = response.aggregations().get("rightAgg");
|
|
Aggregate rightAgg = response.aggregations().get("rightAgg");
|
|
Aggregate rightNestedAgg = rightAgg.nested().aggregations().get("rightNestedAgg");
|
|
Aggregate rightNestedAgg = rightAgg.nested().aggregations().get("rightNestedAgg");
|
|
List<StringTermsBucket> bucketList = rightNestedAgg.sterms().buckets().array();
|
|
List<StringTermsBucket> bucketList = rightNestedAgg.sterms().buckets().array();
|
|
- if (!CollectionUtils.isEmpty(bucketList)) {
|
|
|
|
|
|
+ if (buckets.size() >= bucketList.size()) {
|
|
|
|
+ for (StringTermsBucket bucket : buckets) {
|
|
|
|
+ String value = bucket.key().stringValue();
|
|
|
|
+ mergeList.add(value);
|
|
|
|
+ }
|
|
for (StringTermsBucket bucket : bucketList) {
|
|
for (StringTermsBucket bucket : bucketList) {
|
|
String value = bucket.key().stringValue();
|
|
String value = bucket.key().stringValue();
|
|
mergeList.add(value);
|
|
mergeList.add(value);
|
|
}
|
|
}
|
|
|
|
+ } else {
|
|
|
|
+ for (StringTermsBucket bucket : bucketList) {
|
|
|
|
+ String value = bucket.key().stringValue();
|
|
|
|
+ mergeList.add(value);
|
|
|
|
+ }
|
|
|
|
+ for (StringTermsBucket bucket : buckets) {
|
|
|
|
+ String value = bucket.key().stringValue();
|
|
|
|
+ mergeList.add(value);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
Aggregate inventorAgg = response.aggregations().get("Agg");
|
|
Aggregate inventorAgg = response.aggregations().get("Agg");
|
|
@@ -727,6 +745,18 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
put("rightNestedAgg", termAgg1);
|
|
put("rightNestedAgg", termAgg1);
|
|
}}).build();
|
|
}}).build();
|
|
builder.aggregations("rightAgg", aggregation1);
|
|
builder.aggregations("rightAgg", aggregation1);
|
|
|
|
+
|
|
|
|
+// //对聚合结果统计出总数
|
|
|
|
+ Aggregation terms1 = AggregationBuilders.terms(i -> i.field("merge_right_holder.name.raw").size(100000));
|
|
|
|
+ BucketsPath bucketsPath1 = BucketsPath.of(i -> i.single("terms1>_count"));
|
|
|
|
+ Aggregation statsBucket1 = AggregationBuilders.statsBucket(i -> i.bucketsPath(bucketsPath1));
|
|
|
|
+ Aggregation totalAgg1 = new Aggregation.Builder().nested(new NestedAggregation.Builder().
|
|
|
|
+ path("merge_right_holder").build())
|
|
|
|
+ .aggregations(new HashMap() {{
|
|
|
|
+ put("terms1", terms1);
|
|
|
|
+ put("statsBucket1", statsBucket1);
|
|
|
|
+ }}).build();
|
|
|
|
+ builder.aggregations("totalAgg1", totalAgg1);
|
|
}
|
|
}
|
|
|
|
|
|
public void loadInventorAgg(SearchRequest.Builder builder, Integer pageNum, Integer pageSize) {
|
|
public void loadInventorAgg(SearchRequest.Builder builder, Integer pageNum, Integer pageSize) {
|