Java API客户端中SearchTemplateRequest类的替换

kxeu7u2r  于 2023-01-04  发布在  Java
关注(0)|答案(1)|浏览(231)

我正在将一个java应用程序从ElasticSearch高级客户端迁移到java API客户端。在ElasticSearchjava高级客户端中有一个SearchTemplateRequest类。但是我在java api客户端中找不到任何对应的类。有人能帮忙吗?旧代码片段如下。

public SearchTemplateResponse getScriptResponse(String indexName, String scriptName, Map<String, Object> scriptParams) throws IOException {
        SearchTemplateRequest request = null;
        SearchTemplateResponse response = null;
        try {
            SearchTemplateRequest request = new SearchTemplateRequest();
        request.setRequest(new SearchRequest(new String[] { indexName }, trackTotalHitsSourceBuilder()));
        request.setScriptType(ScriptType.STORED);
        request.setScript(scriptName);
        request.setScriptParams(scriptParams);
        request.getRequest().source().trackTotalHits();
        response = getClient().searchTemplate(request, RequestOptions.DEFAULT);
        } catch (Exception e) {
            throw e;
        }
        return response;
    }

I'm using above code block to get the response of bucket aggregation with script query.
3qpi33ja

3qpi33ja1#

我推荐阅读Getting Started Java API Client
对于创建first connection,请阅读链接。
使用脚本和updateByQuery的示例:

Map<String, JsonData> params = Map.of("key", JsonData.of("value"));

Script script = new Script.Builder()
    .stored(StoredScriptId.of(ssi -> ssi.id("script_name").params(params)))
    .build();

UpdateByQueryRequest updateByQueryRequest = UpdateByQueryRequest.of(
    up -> up.index("idx_script_tst")
        .query(Query.of(q -> q.matchAll(MatchAllQuery.of(maq -> maq))))
        .script(script));

var updateResponse = client.updateByQuery(updateByQueryRequest);

相关问题