|
|
@@ -1,7 +1,9 @@
|
|
|
package org.jetlinks.community.elastic.search.utils;
|
|
|
|
|
|
+import lombok.NonNull;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.elasticsearch.index.query.BoolQueryBuilder;
|
|
|
+import org.elasticsearch.index.query.ExistsQueryBuilder;
|
|
|
import org.elasticsearch.index.query.QueryBuilder;
|
|
|
import org.elasticsearch.index.query.QueryBuilders;
|
|
|
import org.elasticsearch.search.builder.SearchSourceBuilder;
|
|
|
@@ -15,7 +17,10 @@ import org.jetlinks.core.metadata.DataType;
|
|
|
import org.jetlinks.core.metadata.PropertyMetadata;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
import java.util.function.BiConsumer;
|
|
|
import java.util.function.Consumer;
|
|
|
@@ -56,6 +61,19 @@ public class QueryParamTranslator {
|
|
|
for (Term term : queryParam.getTerms()) {
|
|
|
linkTypeParser.process(term, paramConverter, queryBuilders);
|
|
|
}
|
|
|
+
|
|
|
+ //字段是否存在
|
|
|
+ Set<String> includes = queryParam.getIncludes();
|
|
|
+ List<QueryBuilder> must = queryBuilders.must();
|
|
|
+ if (includes!=null&&includes.size()!=0) {
|
|
|
+ BoolQueryBuilder shouldBuilders = QueryBuilders.boolQuery();
|
|
|
+ for (String fieldName : includes) {
|
|
|
+ ExistsQueryBuilder existsQueryBuilder = QueryBuilders.existsQuery(fieldName);
|
|
|
+ must.add(existsQueryBuilder);
|
|
|
+ shouldBuilders.should(existsQueryBuilder);
|
|
|
+ }
|
|
|
+ must.add(shouldBuilders);
|
|
|
+ }
|
|
|
return queryBuilders;
|
|
|
}
|
|
|
public static SearchSourceBuilder convertSearchSourceBuilder(QueryParam queryParam, ElasticSearchIndexMetadata metadata) {
|