I'm newbie to opensearch.
I'm working on utilizing the OpenSearch's Java SDK.
I'know that this contain two java class for client:
OpenSearchClientRestHighLevelClient
I know that RestHighLevelClient has been deprecated in elasticsearch 7.x, and conversion between camel case and snake case is not possible.
For this reason, while using the OpenSearchClient, I found that the wrapper query does not exist for the OpenSearchClient.
So, What I want to ask is:
How to do wrapper query using OpenSearchClient?
The current logic with RestHighLevelClient is:
String query = "{\"term\":{\"name.keyword\":{\"value\":\"bob\"}}}"
BoolQueryBuilder queryBuilder = new BoolQueryBuilder()
.must(new WrapperQueryBuilder(query));
RestClientBuilder builder = getRestClientBuilder();
SearchResponse searchResponse;
try (RestHighLevelClient highLevelClient = new RestHighLevelClient(builder)) {
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder()
.query(queryBuilder).from(0).size(10);
SearchRequest searchRequest = Requests.searchRequest("my_index")
.source(searchSourceBuilder);
searchResponse = highLevelClient.search(searchRequest, RequestOptions.DEFAULT);
}
Thanks for sharing your knowledge.
From version 2.8.1 of the OpenSearchClient it is possible to run a wrapper query. Another difference is that you must provide your query encoded in base64.
import org.opensearch.client.opensearch._types.query_dsl.QueryBuilders
String yourQuery = "your super duper query here...";
//encode in base64....
String encodedQuery = Base64.getEncoder().encodeToString(finalQuery.yourQuery (StandardCharsets.UTF_8.toString()));
QueryBuilders.wrapper().query(encodedQuery).build()._toQuery()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With