From 97584360ed99f1949975d0c60943be44c4e22264 Mon Sep 17 00:00:00 2001 From: Andriy Redko Date: Wed, 3 Apr 2024 11:53:11 -0400 Subject: [PATCH] Address code review comments and add documentation Signed-off-by: Andriy Redko --- USER_GUIDE.md | 1 + .../client/opensearch/generic/Bodies.java | 2 +- .../integTest/AbstractGenericClientIT.java | 47 +++++++++++++++++-- .../AbstractSearchTemplateRequestIT.java | 1 - 4 files changed, 44 insertions(+), 7 deletions(-) diff --git a/USER_GUIDE.md b/USER_GUIDE.md index cce234bb3e..eb498cfc71 100644 --- a/USER_GUIDE.md +++ b/USER_GUIDE.md @@ -198,6 +198,7 @@ You can find a working sample of the above code in [IndexingBasics.java](./sampl - [Data Stream APIs](./guides/data_stream.md) - [Point-in-Time APIs](./guides/point_in_time.md) - [Search](./guides/search.md) +- [Generic Client](./guides/generic.md) ## Plugins diff --git a/java-client/src/main/java/org/opensearch/client/opensearch/generic/Bodies.java b/java-client/src/main/java/org/opensearch/client/opensearch/generic/Bodies.java index 65921a41df..76ba65cd4d 100644 --- a/java-client/src/main/java/org/opensearch/client/opensearch/generic/Bodies.java +++ b/java-client/src/main/java/org/opensearch/client/opensearch/generic/Bodies.java @@ -37,8 +37,8 @@ public static Body json(C value, JsonpMapper jsonpMapper) throws IOException try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { try (JsonGenerator generator = jsonpMapper.jsonProvider().createGenerator(baos)) { jsonpMapper.serialize(value, generator); - return Body.from(baos.toByteArray(), APPLICATION_JSON); } + return Body.from(baos.toByteArray(), APPLICATION_JSON); } } diff --git a/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractGenericClientIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractGenericClientIT.java index 4857e81d8d..76211659c1 100644 --- a/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractGenericClientIT.java +++ b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractGenericClientIT.java @@ -15,11 +15,15 @@ import java.util.stream.Collectors; import org.junit.Test; import org.opensearch.client.json.JsonpDeserializer; +import org.opensearch.client.json.JsonpMapper; +import org.opensearch.client.opensearch._types.mapping.Property; import org.opensearch.client.opensearch.core.SearchResponse; import org.opensearch.client.opensearch.generic.Bodies; import org.opensearch.client.opensearch.generic.Requests; import org.opensearch.client.opensearch.generic.Response; +import org.opensearch.client.opensearch.indices.CreateIndexRequest; import org.opensearch.client.opensearch.indices.CreateIndexResponse; +import org.opensearch.client.opensearch.indices.SegmentSortOrder; public abstract class AbstractGenericClientIT extends OpenSearchJavaClientTestCase { @@ -113,6 +117,14 @@ private void createTestDocument(String index, String id, ShopItem document) thro } private void createIndex(String index) throws IOException { + if (randomBoolean()) { + createIndexUntyped(index); + } else { + createIndexTyped(index); + } + } + + private void createIndexUntyped(String index) throws IOException { try ( Response response = javaClient().generic() .execute( @@ -147,11 +159,36 @@ private void createIndex(String index) throws IOException { assertThat(response.getStatus(), equalTo(200)); assertThat(response.getBody().isPresent(), equalTo(true)); - final CreateIndexResponse r = Bodies.json( - response.getBody().get(), - CreateIndexResponse._DESERIALIZER, - javaClient()._transport().jsonpMapper() - ); + final CreateIndexResponse r = response.getBody() + .map(b -> Bodies.json(b, CreateIndexResponse._DESERIALIZER, javaClient()._transport().jsonpMapper())) + .orElse(null); + assertThat(r.acknowledged(), equalTo(true)); + } + + createTestDocuments(index); + refreshIndex(index); + } + + private void createIndexTyped(String index) throws IOException { + final JsonpMapper jsonpMapper = javaClient()._transport().jsonpMapper(); + + final CreateIndexRequest request = CreateIndexRequest.of( + b -> b.index(index) + .mappings( + m -> m.properties("name", Property.of(p -> p.keyword(v -> v.docValues(true)))) + .properties("size", Property.of(p -> p.keyword(v -> v.docValues(true)))) + ) + .settings(settings -> settings.sort(s -> s.field("name").order(SegmentSortOrder.Asc))) + ); + + try ( + Response response = javaClient().generic() + .execute(Requests.builder().endpoint("/" + index).method("PUT").json(request, jsonpMapper).build()) + ) { + assertThat(response.getStatus(), equalTo(200)); + assertThat(response.getBody().isPresent(), equalTo(true)); + + final CreateIndexResponse r = Bodies.json(response.getBody().get(), CreateIndexResponse._DESERIALIZER, jsonpMapper); assertThat(r.acknowledged(), equalTo(true)); } diff --git a/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractSearchTemplateRequestIT.java b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractSearchTemplateRequestIT.java index 4489ef8a68..efa2298046 100644 --- a/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractSearchTemplateRequestIT.java +++ b/java-client/src/test/java11/org/opensearch/client/opensearch/integTest/AbstractSearchTemplateRequestIT.java @@ -89,7 +89,6 @@ public void testTemplateSearchAggregations() throws Exception { @Test public void testMultiSearchTemplate() throws Exception { - System.out.println("Multi search template test"); var index = "test-msearch-template"; createDocuments(index);