From c1c9af51f886428ac6b06535003b4b149190cf75 Mon Sep 17 00:00:00 2001 From: David Zane Date: Tue, 2 Jul 2024 15:16:15 -0700 Subject: [PATCH] Add support for phase_took & search_pipeline request params Signed-off-by: David Zane --- CHANGELOG.md | 1 + .../client/opensearch/core/SearchRequest.java | 64 +++++++++++++++++++ .../core/SearchTemplateRequest.java | 64 +++++++++++++++++++ .../opensearch/core/SearchRequestTest.java | 18 ++++++ .../core/SearchTemplateRequestTest.java | 22 ++++++- 5 files changed, 167 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d7f6d14acf..31361c34a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ This section is for maintaining a changelog for all breaking changes for the cli ### Added - Document HTTP/2 support ([#330](https://github.com/opensearch-project/opensearch-java/pull/330)) +- Add support for phase_took & search_pipeline request params ([#1036](https://github.com/opensearch-project/opensearch-java/pull/1036)) ### Dependencies diff --git a/java-client/src/main/java/org/opensearch/client/opensearch/core/SearchRequest.java b/java-client/src/main/java/org/opensearch/client/opensearch/core/SearchRequest.java index 9ab808705a..1d1016af1b 100644 --- a/java-client/src/main/java/org/opensearch/client/opensearch/core/SearchRequest.java +++ b/java-client/src/main/java/org/opensearch/client/opensearch/core/SearchRequest.java @@ -105,6 +105,12 @@ public class SearchRequest extends RequestBase implements JsonpSerializable { @Nullable private final Boolean ccsMinimizeRoundtrips; + @Nullable + private final Boolean phaseTook; + + @Nullable + private final String pipeline; + @Nullable private final FieldCollapse collapse; @@ -239,6 +245,8 @@ private SearchRequest(Builder builder) { this.analyzer = builder.analyzer; this.batchedReduceSize = builder.batchedReduceSize; this.ccsMinimizeRoundtrips = builder.ccsMinimizeRoundtrips; + this.phaseTook = builder.phaseTook; + this.pipeline = builder.pipeline; this.collapse = builder.collapse; this.defaultOperator = builder.defaultOperator; this.df = builder.df; @@ -377,6 +385,27 @@ public final Boolean ccsMinimizeRoundtrips() { return this.ccsMinimizeRoundtrips; } + /** + * Indicates whether search phase took times should be returned + * in SearchResponse + *

+ * API name: {@code phase_took} + */ + @Nullable + public final Boolean phaseTook() { + return this.phaseTook; + } + + /** + * Specifies search pipeline name + *

+ * API name: {@code pipeline} + */ + @Nullable + public final String pipeline() { + return this.pipeline; + } + /** * API name: {@code collapse} */ @@ -1084,6 +1113,8 @@ public Builder toBuilder() { .analyzer(analyzer) .batchedReduceSize(batchedReduceSize) .ccsMinimizeRoundtrips(ccsMinimizeRoundtrips) + .phaseTook(phaseTook) + .pipeline(pipeline) .collapse(collapse) .defaultOperator(defaultOperator) .df(df) @@ -1162,6 +1193,12 @@ public static class Builder extends ObjectBuilderBase implements ObjectBuilder + * API name: {@code phase_took} + */ + public final Builder phaseTook(@Nullable Boolean value) { + this.phaseTook = value; + return this; + } + + /** + * Specifies search pipeline name + *

+ * API name: {@code pipeline} + */ + public final Builder pipeline(@Nullable String value) { + this.pipeline = value; + return this; + } + /** * API name: {@code collapse} */ @@ -2354,6 +2412,12 @@ protected static void setupSearchRequestDeserializer(ObjectDeserializer expandWildcards; @Nullable @@ -113,6 +119,8 @@ private SearchTemplateRequest(Builder builder) { this.allowNoIndices = builder.allowNoIndices; this.ccsMinimizeRoundtrips = builder.ccsMinimizeRoundtrips; + this.phaseTook = builder.phaseTook; + this.pipeline = builder.pipeline; this.expandWildcards = ApiTypeHelper.unmodifiable(builder.expandWildcards); this.explain = builder.explain; this.id = builder.id; @@ -156,6 +164,27 @@ public final Boolean ccsMinimizeRoundtrips() { return this.ccsMinimizeRoundtrips; } + /** + * Indicates whether search phase took times should be returned + * in SearchResponse + *

+ * API name: {@code phase_took} + */ + @Nullable + public final Boolean phaseTook() { + return this.phaseTook; + } + + /** + * Specifies search pipeline name + *

+ * API name: {@code pipeline} + */ + @Nullable + public final String pipeline() { + return this.pipeline; + } + /** * Whether to expand wildcard expression to concrete indices that are open, * closed or both. @@ -334,6 +363,8 @@ protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) { public Builder toBuilder() { return new Builder().allowNoIndices(allowNoIndices) .ccsMinimizeRoundtrips(ccsMinimizeRoundtrips) + .phaseTook(phaseTook) + .pipeline(pipeline) .expandWildcards(expandWildcards) .explain(explain) .id(id) @@ -362,6 +393,12 @@ public static class Builder extends ObjectBuilderBase implements ObjectBuilder expandWildcards; @@ -424,6 +461,27 @@ public final Builder ccsMinimizeRoundtrips(@Nullable Boolean value) { return this; } + /** + * Indicates whether search phase took times should be returned + * in SearchResponse + *

+ * API name: {@code phase_took} + */ + public final Builder phaseTook(@Nullable Boolean value) { + this.phaseTook = value; + return this; + } + + /** + * Specifies search pipeline name + *

+ * API name: {@code pipeline} + */ + public final Builder pipeline(@Nullable String value) { + this.pipeline = value; + return this; + } + /** * Whether to expand wildcard expression to concrete indices that are open, * closed or both. @@ -700,6 +758,12 @@ protected static void setupSearchTemplateRequestDeserializer(ObjectDeserializer< if (request.ccsMinimizeRoundtrips != null) { params.put("ccs_minimize_roundtrips", String.valueOf(request.ccsMinimizeRoundtrips)); } + if (request.phaseTook != null) { + params.put("phase_took", String.valueOf(request.phaseTook)); + } + if (request.pipeline != null) { + params.put("search_pipeline", request.pipeline); + } if (request.routing != null) { params.put("routing", request.routing); } diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/core/SearchRequestTest.java b/java-client/src/test/java/org/opensearch/client/opensearch/core/SearchRequestTest.java index 714a944960..bd0ca5186b 100644 --- a/java-client/src/test/java/org/opensearch/client/opensearch/core/SearchRequestTest.java +++ b/java-client/src/test/java/org/opensearch/client/opensearch/core/SearchRequestTest.java @@ -32,6 +32,24 @@ public void ext() { assertEquals("{\"ext\":{\"similarity\":{\"fields\":[\"name\"]}}}", toJson(request)); } + @Test + public void phaseTook() { + SearchRequest request = new SearchRequest.Builder().phaseTook(true).build(); + + assertEquals("{}", toJson(request)); + assertEquals(true, request.phaseTook()); + assertTrue(Boolean.parseBoolean(SearchRequest._ENDPOINT.queryParameters(request).get("phase_took"))); + } + + @Test + public void pipeline() { + SearchRequest request = new SearchRequest.Builder().pipeline("my_pipeline").build(); + + assertEquals("{}", toJson(request)); + assertEquals("my_pipeline", request.pipeline()); + assertEquals("my_pipeline", SearchRequest._ENDPOINT.queryParameters(request).get("search_pipeline")); + } + @Test public void toBuilder() { SearchRequest origin = new SearchRequest.Builder().index("index").build(); diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/core/SearchTemplateRequestTest.java b/java-client/src/test/java/org/opensearch/client/opensearch/core/SearchTemplateRequestTest.java index 4047bf8051..0e70e32c13 100644 --- a/java-client/src/test/java/org/opensearch/client/opensearch/core/SearchTemplateRequestTest.java +++ b/java-client/src/test/java/org/opensearch/client/opensearch/core/SearchTemplateRequestTest.java @@ -8,10 +8,28 @@ package org.opensearch.client.opensearch.core; -import org.junit.Assert; import org.junit.Test; +import org.opensearch.client.opensearch.model.ModelTestCase; -public class SearchTemplateRequestTest extends Assert { +public class SearchTemplateRequestTest extends ModelTestCase { + + @Test + public void phaseTook() { + SearchTemplateRequest request = new SearchTemplateRequest.Builder().phaseTook(true).build(); + + assertEquals("{}", toJson(request)); + assertEquals(true, request.phaseTook()); + assertTrue(Boolean.parseBoolean(SearchTemplateRequest._ENDPOINT.queryParameters(request).get("phase_took"))); + } + + @Test + public void pipeline() { + SearchTemplateRequest request = new SearchTemplateRequest.Builder().pipeline("my_pipeline").build(); + + assertEquals("{}", toJson(request)); + assertEquals("my_pipeline", request.pipeline()); + assertEquals("my_pipeline", SearchTemplateRequest._ENDPOINT.queryParameters(request).get("search_pipeline")); + } @Test public void toBuilder() {