Skip to content

Commit bc78613

Browse files
Grogdunnreta
andauthored
Add "filter" to neural query (#932)
* 🩹 add filter to neural query Signed-off-by: Lorenzo Caenazzo <lorenzo.caenazzo@optionfactory.net> * CHANGELOG.md Signed-off-by: Lorenzo Caenazzo <lorenzo.caenazzo@optionfactory.net> * 💚 spotless fix Signed-off-by: Lorenzo Caenazzo <lorenzo.caenazzo@optionfactory.net> * 💚 spotless fix, jdk8 check Signed-off-by: Lorenzo Caenazzo <lorenzo.caenazzo@optionfactory.net> * 💚 spotless fix Signed-off-by: Lorenzo Caenazzo <lorenzo.caenazzo@optionfactory.net> * Update CHANGELOG.md Co-authored-by: Andriy Redko <drreta@gmail.com> Signed-off-by: Grogdunn <frzlollo@gmail.com> --------- Signed-off-by: Lorenzo Caenazzo <lorenzo.caenazzo@optionfactory.net> Signed-off-by: Grogdunn <frzlollo@gmail.com> Co-authored-by: Andriy Redko <drreta@gmail.com>
1 parent 5ad54c6 commit bc78613

3 files changed

Lines changed: 40 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ This section is for maintaining a changelog for all breaking changes for the cli
5757
- Support weight function in function score query ([#880](https://github.com/opensearch-project/opensearch-java/pull/880))
5858
- Fix pattern replace by making flag and replacement optional as on api ([#895](https://github.com/opensearch-project/opensearch-java/pull/895))
5959
- Client with Java 8 runtime and Apache HttpClient 5 Transport fails with java.lang.NoSuchMethodError: java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer ([#920](https://github.com/opensearch-project/opensearch-java/pull/920))
60+
- Add missed field "filter" to NeuralQuery model class
6061

6162
### Security
6263

@@ -364,4 +365,4 @@ This section is for maintaining a changelog for all breaking changes for the cli
364365
[2.5.0]: https://github.com/opensearch-project/opensearch-java/compare/v2.4.0...v2.5.0
365366
[2.4.0]: https://github.com/opensearch-project/opensearch-java/compare/v2.3.0...v2.4.0
366367
[2.3.0]: https://github.com/opensearch-project/opensearch-java/compare/v2.2.0...v2.3.0
367-
[2.2.0]: https://github.com/opensearch-project/opensearch-java/compare/v2.1.0...v2.2.0
368+
[2.2.0]: https://github.com/opensearch-project/opensearch-java/compare/v2.1.0...v2.2.0

java-client/src/main/java/org/opensearch/client/opensearch/_types/query_dsl/NeuralQuery.java

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public class NeuralQuery extends QueryBase implements QueryVariant {
2727
private final int k;
2828
@Nullable
2929
private final String modelId;
30+
@Nullable
31+
private final Query filter;
3032

3133
private NeuralQuery(NeuralQuery.Builder builder) {
3234
super(builder);
@@ -35,6 +37,7 @@ private NeuralQuery(NeuralQuery.Builder builder) {
3537
this.queryText = ApiTypeHelper.requireNonNull(builder.queryText, this, "queryText");
3638
this.k = ApiTypeHelper.requireNonNull(builder.k, this, "k");
3739
this.modelId = builder.modelId;
40+
this.filter = builder.filter;
3841
}
3942

4043
public static NeuralQuery of(Function<NeuralQuery.Builder, ObjectBuilder<NeuralQuery>> fn) {
@@ -93,6 +96,16 @@ public final String modelId() {
9396
return this.modelId;
9497
}
9598

99+
/**
100+
* Optional - A query to filter the results of the query.
101+
*
102+
* @return The filter query.
103+
*/
104+
@Nullable
105+
public final Query filter() {
106+
return this.filter;
107+
}
108+
96109
@Override
97110
protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
98111
generator.writeStartObject(this.field);
@@ -107,11 +120,16 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) {
107120

108121
generator.write("k", this.k);
109122

123+
if (this.filter != null) {
124+
generator.writeKey("filter");
125+
this.filter.serialize(generator, mapper);
126+
}
127+
110128
generator.writeEnd();
111129
}
112130

113131
public Builder toBuilder() {
114-
return new Builder().field(field).queryText(queryText).k(k).modelId(modelId);
132+
return new Builder().field(field).queryText(queryText).k(k).modelId(modelId).filter(filter);
115133
}
116134

117135
/**
@@ -123,6 +141,8 @@ public static class Builder extends QueryBase.AbstractBuilder<NeuralQuery.Builde
123141
private Integer k;
124142
@Nullable
125143
private String modelId;
144+
@Nullable
145+
private Query filter;
126146

127147
/**
128148
* Required - The target field.
@@ -169,6 +189,17 @@ public NeuralQuery.Builder k(@Nullable Integer k) {
169189
return this;
170190
}
171191

192+
/**
193+
* Optional - A query to filter the results of the knn query.
194+
*
195+
* @param filter The filter query.
196+
* @return This builder.
197+
*/
198+
public NeuralQuery.Builder filter(@Nullable Query filter) {
199+
this.filter = filter;
200+
return this;
201+
}
202+
172203
@Override
173204
protected NeuralQuery.Builder self() {
174205
return this;
@@ -198,6 +229,7 @@ protected static void setupNeuralQueryDeserializer(ObjectDeserializer<NeuralQuer
198229
op.add(NeuralQuery.Builder::queryText, JsonpDeserializer.stringDeserializer(), "query_text");
199230
op.add(NeuralQuery.Builder::modelId, JsonpDeserializer.stringDeserializer(), "model_id");
200231
op.add(NeuralQuery.Builder::k, JsonpDeserializer.integerDeserializer(), "k");
232+
op.add(NeuralQuery.Builder::filter, Query._DESERIALIZER, "filter");
201233

202234
op.setKey(NeuralQuery.Builder::field, JsonpDeserializer.stringDeserializer());
203235
}

java-client/src/test/java/org/opensearch/client/opensearch/_types/query_dsl/NeuralQueryTest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@
66
public class NeuralQueryTest extends ModelTestCase {
77
@Test
88
public void toBuilder() {
9-
NeuralQuery origin = new NeuralQuery.Builder().field("field").queryText("queryText").k(1).build();
9+
NeuralQuery origin = new NeuralQuery.Builder().field("field")
10+
.queryText("queryText")
11+
.k(1)
12+
.filter(IdsQuery.of(builder -> builder.values("Some_ID")).toQuery())
13+
.build();
1014
NeuralQuery copied = origin.toBuilder().build();
1115

1216
assertEquals(toJson(copied), toJson(origin));

0 commit comments

Comments
 (0)