diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQuery.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQuery.java index b4237e378..93d3e2f44 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQuery.java @@ -50,7 +50,6 @@ public class NativeQuery extends BaseQuery { private final Map aggregations = new LinkedHashMap<>(); @Nullable private Suggester suggester; @Nullable private FieldCollapse fieldCollapse; - private List scriptedFields = Collections.emptyList(); private List sortOptions = Collections.emptyList(); private Map searchExtensions = Collections.emptyMap(); @@ -63,7 +62,6 @@ public class NativeQuery extends BaseQuery { this.aggregations.putAll(builder.getAggregations()); this.suggester = builder.getSuggester(); this.fieldCollapse = builder.getFieldCollapse(); - this.scriptedFields = builder.getScriptedFields(); this.sortOptions = builder.getSortOptions(); this.searchExtensions = builder.getSearchExtensions(); @@ -107,10 +105,6 @@ public class NativeQuery extends BaseQuery { return fieldCollapse; } - public List getScriptedFields() { - return scriptedFields; - } - public List getSortOptions() { return sortOptions; } diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQueryBuilder.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQueryBuilder.java index 7ffe553cb..c2c6ae7e2 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQueryBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQueryBuilder.java @@ -32,7 +32,6 @@ import java.util.Map; import java.util.function.Function; import org.springframework.data.elasticsearch.core.query.BaseQueryBuilder; -import org.springframework.data.elasticsearch.core.query.ScriptedField; import org.springframework.lang.Nullable; import org.springframework.util.Assert; @@ -48,7 +47,6 @@ public class NativeQueryBuilder extends BaseQueryBuilder aggregations = new LinkedHashMap<>(); @Nullable private Suggester suggester; @Nullable private FieldCollapse fieldCollapse; - private final List scriptedFields = new ArrayList<>(); private List sortOptions = new ArrayList<>(); private Map searchExtensions = new LinkedHashMap<>(); @@ -81,10 +79,6 @@ public class NativeQueryBuilder extends BaseQueryBuilder getScriptedFields() { - return scriptedFields; - } - public List getSortOptions() { return sortOptions; } @@ -149,17 +143,10 @@ public class NativeQueryBuilder extends BaseQueryBuilder values) { Assert.notEmpty(values, "values must not be empty"); + sortOptions.clear(); sortOptions.addAll(values); diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java index 692212519..7de1c517d 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java @@ -1157,6 +1157,9 @@ class RequestConverter { bb.indicesBoost(boosts); } + query.getScriptedFields().forEach(scriptedField -> bb.scriptFields(scriptedField.getFieldName(), + sf -> sf.script(getScript(scriptedField.getScriptData())))); + if (query instanceof NativeQuery) { prepareNativeSearch((NativeQuery) query, bb); } @@ -1259,6 +1262,9 @@ class RequestConverter { addHighlight(query, builder); + query.getScriptedFields().forEach(scriptedField -> builder.scriptFields(scriptedField.getFieldName(), + sf -> sf.script(getScript(scriptedField.getScriptData())))); + if (query instanceof NativeQuery) { prepareNativeSearch((NativeQuery) query, builder); } @@ -1424,9 +1430,6 @@ class RequestConverter { @SuppressWarnings("DuplicatedCode") private void prepareNativeSearch(NativeQuery query, SearchRequest.Builder builder) { - query.getScriptedFields().forEach(scriptedField -> builder.scriptFields(scriptedField.getFieldName(), - sf -> sf.script(getScript(scriptedField.getScriptData())))); - builder // .suggest(query.getSuggester()) // .collapse(query.getFieldCollapse()) // @@ -1445,9 +1448,6 @@ class RequestConverter { @SuppressWarnings("DuplicatedCode") private void prepareNativeSearch(NativeQuery query, MultisearchBody.Builder builder) { - query.getScriptedFields().forEach(scriptedField -> builder.scriptFields(scriptedField.getFieldName(), - sf -> sf.script(getScript(scriptedField.getScriptData())))); - builder // .suggest(query.getSuggester()) // .collapse(query.getFieldCollapse()) // diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/BaseQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/BaseQuery.java index 8978717c7..61289c459 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/BaseQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/BaseQuery.java @@ -81,6 +81,7 @@ public class BaseQuery implements Query { @Nullable private Boolean allowNoIndices = null; private EnumSet expandWildcards; private List docValueFields = new ArrayList<>(); + private List scriptedFields = new ArrayList<>(); public BaseQuery() {} @@ -115,6 +116,7 @@ public class BaseQuery implements Query { this.allowNoIndices = builder.getAllowNoIndices(); this.expandWildcards = builder.getExpandWildcards(); this.docValueFields = builder.getDocValueFields(); + this.scriptedFields = builder.getScriptedFields(); } /** @@ -543,4 +545,9 @@ public class BaseQuery implements Query { this.docValueFields = docValueFields; } + + @Override + public List getScriptedFields() { + return scriptedFields; + } } diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/BaseQueryBuilder.java b/src/main/java/org/springframework/data/elasticsearch/core/query/BaseQueryBuilder.java index e85829667..2385c5c6b 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/BaseQueryBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/BaseQueryBuilder.java @@ -71,6 +71,7 @@ public abstract class BaseQueryBuilder docValueFields = new ArrayList<>(); + private final List scriptedFields = new ArrayList<>(); @Nullable public Sort getSort() { @@ -226,6 +227,10 @@ public abstract class BaseQueryBuilder getScriptedFields() { + return scriptedFields; + } + public SELF withPageable(Pageable pageable) { this.pageable = pageable; return self(); @@ -443,6 +448,14 @@ public abstract class BaseQueryBuilder getDocValueFields(); + /** + * @return the list of scripted fields for the query + * @since 5.1 + */ + List getScriptedFields(); + /** * @since 4.3 */