Skip to content

Add search extension plugins parameters to NativeQuery. #2307

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import co.elastic.clients.elasticsearch._types.query_dsl.Query;
import co.elastic.clients.elasticsearch.core.search.FieldCollapse;
import co.elastic.clients.elasticsearch.core.search.Suggester;
import co.elastic.clients.json.JsonData;

import java.util.Collections;
import java.util.LinkedHashMap;
Expand Down Expand Up @@ -49,6 +50,8 @@ public class NativeQuery extends BaseQuery {
private List<ScriptedField> scriptedFields = Collections.emptyList();
private List<SortOptions> sortOptions = Collections.emptyList();

private Map<String, JsonData> searchExtensions = Collections.emptyMap();

public NativeQuery(NativeQueryBuilder builder) {
super(builder);
this.query = builder.getQuery();
Expand All @@ -58,6 +61,7 @@ public NativeQuery(NativeQueryBuilder builder) {
this.fieldCollapse = builder.getFieldCollapse();
this.scriptedFields = builder.getScriptedFields();
this.sortOptions = builder.getSortOptions();
this.searchExtensions = builder.getSearchExtensions();
}

public NativeQuery(@Nullable Query query) {
Expand Down Expand Up @@ -99,4 +103,8 @@ public List<ScriptedField> getScriptedFields() {
public List<SortOptions> getSortOptions() {
return sortOptions;
}

public Map<String, JsonData> getSearchExtensions() {
return searchExtensions;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@
import co.elastic.clients.elasticsearch._types.query_dsl.Query;
import co.elastic.clients.elasticsearch.core.search.FieldCollapse;
import co.elastic.clients.elasticsearch.core.search.Suggester;
import co.elastic.clients.json.JsonData;
import co.elastic.clients.util.ObjectBuilder;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
Expand All @@ -49,9 +49,9 @@ public class NativeQueryBuilder extends BaseQueryBuilder<NativeQuery, NativeQuer
@Nullable private FieldCollapse fieldCollapse;
private final List<ScriptedField> scriptedFields = new ArrayList<>();
private List<SortOptions> sortOptions = new ArrayList<>();
private Map<String, JsonData> searchExtensions = new LinkedHashMap<>();

public NativeQueryBuilder() {
}
public NativeQueryBuilder() {}

@Nullable
public Query getQuery() {
Expand Down Expand Up @@ -85,6 +85,10 @@ public List<SortOptions> getSortOptions() {
return sortOptions;
}

public Map<String, JsonData> getSearchExtensions() {
return this.searchExtensions;
}

public NativeQueryBuilder withQuery(Query query) {

Assert.notNull(query, "query must not be null");
Expand Down Expand Up @@ -167,6 +171,23 @@ public NativeQueryBuilder withSort(Function<SortOptions.Builder, ObjectBuilder<S
return this;
}

public NativeQueryBuilder withSearchExtension(String key, JsonData value) {

Assert.notNull(key, "key must not be null");
Assert.notNull(value, "value must not be null");

searchExtensions.put(key, value);
return this;
}

public NativeQueryBuilder withSearchExtensions(Map<String, JsonData> searchExtensions) {

Assert.notNull(searchExtensions, "searchExtensions must not be null");

searchExtensions.putAll(searchExtensions);
return this;
}

public NativeQuery build() {
return new NativeQuery(this);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1398,7 +1398,9 @@ private void prepareNativeSearch(NativeQuery query, SearchRequest.Builder builde
builder.aggregations(query.getAggregations());
}

// todo #2150 searchExt, currently not supported by the new client
if (!isEmpty(query.getSearchExtensions())) {
builder.ext(query.getSearchExtensions());
}
}

@SuppressWarnings("DuplicatedCode")
Expand All @@ -1416,7 +1418,9 @@ private void prepareNativeSearch(NativeQuery query, MultisearchBody.Builder buil
builder.aggregations(query.getAggregations());
}

// todo #2150 searchExt, currently not supported by the new client
if (!isEmpty(query.getSearchExtensions())) {
builder.ext(query.getSearchExtensions());
}
}

@Nullable
Expand Down