有没有一种方法可以从queryString创建co.elastic.clients.elasticsearch._types.query_dsl.Query对象?

rqmkfv5c  于 2023-05-16  发布在  ElasticSearch
关注(0)|答案(1)|浏览(148)

我有一个复杂的Elasticsearch String查询,我不想使用Java类创建。
有没有一种方法可以实现它,以便像这样使用它:

Query query = getQueryFromString(queryString);
    
co.elastic.clients.elasticsearch.core.SearchResponse searchResponse = null;
    try {

        co.elastic.clients.elasticsearch.core.SearchRequest request = new co.elastic.clients.elasticsearch.core.SearchRequest.Builder()
                .index(indexName)
                .size(pageSize)
                .query(query
                ).build();

        searchResponse = esClient.withTransportOptions(getRequestOptions()).search(request, Object.class);

    } catch (Exception ex) {
        log.error("Some exception occurred while requesting response from elasticsearch", ex);
    }

我浏览了文档,但无法真正找到实现此目的的方法。任何帮助都将不胜感激。

qkf9rpyu

qkf9rpyu1#

我试过Wrapper Query
将查询转换为Base64并运行以下代码。
查询{“match_all”:{}}是ewogICAgIm 1hdGNoX 2FsbCI 6 IHt 9 CiAgfQ ==。

var wrapper = WrapperQuery.of(wq -> wq.query("ewogICAgIm1hdGNoX2FsbCI6IHt9CiAgfQ=="));

var request = SearchRequest.of(sr -> sr
    .index("idx_movies")
    .query(Query.of(q -> q.wrapper(wrapper))));

SearchResponse<Movie> response = ClientUtils.getClient().search(request, Movie.class);

相关问题