Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to search wrapper query with OpenSearchClient in Java SDK?

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:

  1. OpenSearchClient
  2. RestHighLevelClient


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.

like image 953
seung7642 Avatar asked Aug 15 '26 23:08

seung7642


1 Answers

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()
like image 146
Vitor Santos Avatar answered Aug 17 '26 13:08

Vitor Santos



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!