|
@@ -0,0 +1,91 @@
|
|
|
+package cn.cslg.pas.factorys.EsCountBuilderFactory;
|
|
|
+
|
|
|
+import co.elastic.clients.elasticsearch._types.aggregations.*;
|
|
|
+import co.elastic.clients.elasticsearch._types.query_dsl.Query;
|
|
|
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.util.HashMap;
|
|
|
+
|
|
|
+@Component
|
|
|
+public class ChildCountBuilder implements IEsCountBuilder{
|
|
|
+ public String field = "";
|
|
|
+ public String valueOne = "";
|
|
|
+ public String valueTwo = "";
|
|
|
+ public Integer topN = 10;
|
|
|
+ public String path = "";
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Aggregation createAggregation() {
|
|
|
+ Aggregation terms = AggregationBuilders.terms(j -> j.field(field).size(topN));
|
|
|
+ if (StringUtils.isNotEmpty(valueOne)) {
|
|
|
+ String str = "*";
|
|
|
+ String s = str.concat(valueOne).concat("*");
|
|
|
+ Query query = QueryBuilders.wildcard(i -> i.field(field).value(s));
|
|
|
+// Query query = QueryBuilders.term(j -> j.field(field).value(valueOne));
|
|
|
+ Aggregation filter = AggregationBuilders.filter(n -> n.bool(k -> k.must(query)));
|
|
|
+ terms = new Aggregation.Builder().terms(new TermsAggregation.Builder()
|
|
|
+ .field(field).size(topN).build())
|
|
|
+ .aggregations(new HashMap() {{
|
|
|
+ put("filter_agg", filter);
|
|
|
+ }}).build();
|
|
|
+ }
|
|
|
+ Aggregation finalTerms = terms;
|
|
|
+ Aggregation aggregation = new Aggregation.Builder().children(new ChildrenAggregation.Builder()
|
|
|
+ .type("project_customfield").build()).aggregations(new HashMap() {{
|
|
|
+ put("child_agg", finalTerms);
|
|
|
+ }}).build();
|
|
|
+ return aggregation;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String getField() {
|
|
|
+ return field;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setField(String field) {
|
|
|
+ this.field = field;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String getValueOne() {
|
|
|
+ return valueOne;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setValueOne(String valueOne) {
|
|
|
+ this.valueOne = valueOne;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String getValueTwo() {
|
|
|
+ return valueTwo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setValueTwo(String valueTwo) {
|
|
|
+ this.valueTwo = valueTwo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Integer getTopN() {
|
|
|
+ return topN;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setTopN(Integer topN) {
|
|
|
+ this.topN = topN;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String getPath() {
|
|
|
+ return path;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setPath(String path) {
|
|
|
+ this.path = path;
|
|
|
+ }
|
|
|
+}
|