Skip to content

Support multiple knn fields for msearch #553

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

Closed
wants to merge 1 commit into from
Closed
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 @@ -89,7 +89,7 @@ public class MultisearchBody implements JsonpSerializable {
private final List<FieldAndFormat> docvalueFields;

@Nullable
private final KnnQuery knn;
private final List<KnnQuery> knn;

@Nullable
private final Integer from;
Expand Down Expand Up @@ -267,7 +267,7 @@ public final List<FieldAndFormat> docvalueFields() {
* API name: {@code knn}
*/
@Nullable
public final KnnQuery knn() {
public final List<KnnQuery> knn() {
return this.knn;
}

Expand Down Expand Up @@ -570,8 +570,11 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
}
if (this.knn != null) {
generator.writeKey("knn");
this.knn.serialize(generator, mapper);

generator.writeStartArray();
for(KnnQuery knnQuery: this.knn()) {
knnQuery.serialize(generator, mapper);
}
generator.writeEnd();
}
if (this.from != null) {
generator.writeKey("from");
Expand Down Expand Up @@ -775,7 +778,7 @@ public static class Builder extends WithJsonObjectBuilderBase<Builder> implement
private List<FieldAndFormat> docvalueFields;

@Nullable
private KnnQuery knn;
private List<KnnQuery> knn;

@Nullable
private Integer from;
Expand Down Expand Up @@ -1017,8 +1020,19 @@ public final Builder docvalueFields(Function<FieldAndFormat.Builder, ObjectBuild
* <p>
* API name: {@code knn}
*/
public final Builder knn(@Nullable KnnQuery value) {
this.knn = value;
public final Builder knn(List<KnnQuery> knnQueryList) {
this.knn = _listAddAll(this.knn, knnQueryList);
return this;
}


/**
* Defines the approximate kNN search to run.
* <p>
* API name: {@code knn}
*/
public final Builder knn(KnnQuery value, KnnQuery... values) {
this.knn = _listAdd(this.knn, value, values);
return this;
}

Expand Down