-
Notifications
You must be signed in to change notification settings - Fork 187
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
(cherry picked from commit c40e486) Signed-off-by: Jai2305 <[email protected]> Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
- Loading branch information
1 parent
0242507
commit 67b8c1a
Showing
4 changed files
with
110 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
- [Working With JSON](#working-with-json) | ||
- [Serialization](#serialization) | ||
- [Using toJsonString](#using-tojsonstring) | ||
- [Manual Serialization](#manual-serialization) | ||
|
||
|
||
# Working With JSON | ||
|
||
OpenSearch Java client seamlessly integrates with JSON, providing serialization and deserialization capability. | ||
|
||
## Serialization | ||
|
||
For demonstration let's consider an instance of `SearchRequest`. | ||
|
||
```java | ||
|
||
SearchRequest searchRequest = SearchRequest.of( | ||
request -> request.index("index1", "index2") | ||
.aggregations(Collections.emptyMap()) | ||
.terminateAfter(5L) | ||
.query(q -> q.match(t -> t.field("name").query(FieldValue.of("OpenSearch")))) | ||
); | ||
``` | ||
### Using toJsonString | ||
For classes implementing `PlainJsonSerializable`, which extends `JsonpSerializable`, a default `toJsonString` method is provided. | ||
This implementation uses `jakarta.json.spi.JsonProvider` SPI to discover the available JSON provider instance | ||
from the classpath and to create a new mapper. The `JsonpUtils` utility class streamlines this serialization process. | ||
The following code example demonstrates how to use the `toJsonString` method to serialize objects: | ||
|
||
```java | ||
String requestString = searchRequest.toJsonString(); | ||
``` | ||
|
||
|
||
### Manual Serialization | ||
For classes implementing the `JsonpSerializable` interface, a serialize method is provided, which takes a mapper and a generator | ||
as arguments and returns the JSON string representation of the instance. | ||
|
||
The following sample code demonstrates how to serialize an instance of a Java class: | ||
|
||
```java | ||
private String toJson(JsonpSerializable object) { | ||
try (StringWriter writer = new StringWriter()) { | ||
JsonbJsonpMapper mapper = new JsonbJsonpMapper(); | ||
try (JsonGenerator generator = mapper.jsonProvider().createGenerator(writer)) { | ||
serialize(generator, mapper); | ||
} | ||
return writer.toString(); | ||
} catch (IOException ex) { | ||
throw new UncheckedIOException(ex); | ||
} | ||
} | ||
``` |
55 changes: 55 additions & 0 deletions
55
samples/src/main/java/org/opensearch/client/samples/json/SerializationBasics.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
/* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
* | ||
* The OpenSearch Contributors require contributions made to | ||
* this file be licensed under the Apache-2.0 license or a | ||
* compatible open source license. | ||
*/ | ||
|
||
package org.opensearch.client.samples.json; | ||
|
||
import java.util.List; | ||
import org.apache.logging.log4j.LogManager; | ||
import org.apache.logging.log4j.Logger; | ||
import org.opensearch.client.opensearch.OpenSearchClient; | ||
import org.opensearch.client.opensearch.indices.PutIndexTemplateRequest; | ||
import org.opensearch.client.opensearch.indices.PutIndexTemplateResponse; | ||
import org.opensearch.client.samples.SampleClient; | ||
import org.opensearch.client.samples.Search; | ||
|
||
public class SerializationBasics { | ||
|
||
private static final Logger LOGGER = LogManager.getLogger(Search.class); | ||
|
||
private static OpenSearchClient client; | ||
|
||
public static void main(String[] args) { | ||
try { | ||
client = SampleClient.create(); | ||
|
||
var version = client.info().version(); | ||
LOGGER.info("Server: {}@{}.", version.distribution(), version.number()); | ||
|
||
final var indexTemplateName = "my-index"; | ||
final var indexSettingsComponentTemplate = "index-settings"; | ||
final var indexMappingsComponentTemplate = "index-mappings"; | ||
|
||
// Create Index Template Request for index 'my-index'. | ||
PutIndexTemplateRequest putIndexTemplateRequest = PutIndexTemplateRequest.of( | ||
it -> it.name(indexTemplateName) | ||
.indexPatterns("my-index-*") | ||
.composedOf(List.of(indexSettingsComponentTemplate, indexMappingsComponentTemplate)) | ||
); | ||
|
||
LOGGER.info("Creating index template {}.", indexTemplateName); | ||
|
||
// Use toJsonString method to log Request and Response string. | ||
LOGGER.debug("Index Template Request: {}.", putIndexTemplateRequest.toJsonString()); | ||
PutIndexTemplateResponse response = client.indices().putIndexTemplate(putIndexTemplateRequest); | ||
LOGGER.info("Index Template Response: {}.", response.toJsonString()); | ||
|
||
} catch (Exception e) { | ||
LOGGER.error("Exception occurred.", e); | ||
} | ||
} | ||
} |