You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch Java API Client中SearchTemplateRequest的替代方案咨询

Elasticsearch Java API Client 替代 SearchTemplateRequest 实现脚本查询

在Elasticsearch Java API Client中,没有和High Level Client完全一一对应的SearchTemplateRequest类,但可以通过API Client自带的SearchTemplate API实现相同的存储脚本查询功能,以下是迁移后的代码示例及关键说明:

迁移后代码

import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch.core.SearchTemplateRequest;
import co.elastic.clients.elasticsearch.core.SearchTemplateResponse;
import co.elastic.clients.elasticsearch.core.search.TrackHits;
import co.elastic.clients.elasticsearch._types.Script;
import co.elastic.clients.elasticsearch._types.ScriptType;
import java.io.IOException;
import java.util.Map;

public SearchTemplateResponse getScriptResponse(String indexName, String scriptName, Map<String, Object> scriptParams) throws IOException {
    // 构建SearchTemplate请求
    SearchTemplateRequest request = new SearchTemplateRequest.Builder()
            // 指定查询索引
            .index(indexName)
            // 配置存储脚本:通过脚本ID指定,类型为STORED
            .script(Script.of(s -> s
                    .id(scriptName)
                    .type(ScriptType.Stored)
            ))
            // 传递脚本参数
            .params(scriptParams)
            // 启用trackTotalHits,确保返回准确的总命中数
            .searchRequest(sr -> sr
                    .trackTotalHits(TrackHits.of(th -> th.enabled(true)))
            )
            .build();

    // 执行请求并返回响应
    return getElasticsearchClient().searchTemplate(request);
}

关键差异说明

  • 包路径变更:原High Level Client的类位于org.elasticsearch.client.core下,API Client对应类位于co.elastic.clients.elasticsearch.core下
  • 构建模式:API Client采用Builder链式调用替代原有的setter方法,代码更简洁易读
  • 脚本配置:通过Script.of()静态方法构建脚本对象,明确指定存储脚本的ID和类型
  • TrackTotalHits配置:在searchRequest()内部通过TrackHits对象启用,替代原有的直接调用trackTotalHits()
  • 客户端调用:API Client的ElasticsearchClient直接调用searchTemplate()方法执行请求,无需额外传递RequestOptions.DEFAULT(如需自定义请求选项,可使用重载方法传入)

内容的提问来源于stack exchange,提问作者Chetna Joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 12:01:52