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

Scala操作Elasticsearch获取文档时遇GetRequest构造器访问错误

解决Scala中Elasticsearch GetRequest构造函数无法访问的问题

错误原因

Elasticsearch Java客户端的GetRequest类构造函数为包私有,无法直接通过new关键字实例化,必须使用官方推荐的Builder构建器来创建请求对象。

修正后的代码

import co.elastic.clients.elasticsearch.core.{GetRequest, GetResponse}
import java.util.concurrent.CompletableFuture

class GetIndex {

  def Getting(): Unit = {

    val esClient = ElasticSearchConnection.getClient
    // 使用Builder模式构建GetRequest
    val request: GetRequest = GetRequest.of(g => g
      .index("firstindex")
      .id("1")
    )

    val response: CompletableFuture[GetResponse[User]] = esClient.get(request, classOf[User])
    // 同步获取异步结果(生产环境建议用异步回调避免阻塞)
    println(response.join())
  }
}

额外说明

  1. Builder模式的优势:Elasticsearch客户端通过链式调用的Builder模式,支持灵活配置各类请求参数(如路由、版本号等),比直接构造对象更易扩展。
  2. 异步结果处理:原代码直接打印CompletableFuture对象只会输出Future实例的引用,需通过join()同步获取结果,或使用whenComplete()添加异步回调处理响应和异常。
  3. 实体类序列化:确保User case class已正确配置Elasticsearch的序列化支持(如添加Jackson注解、集成Elasticsearch Jackson模块),否则无法将ES文档反序列化为User对象。

内容的提问来源于stack exchange,提问作者Asif khAn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:55:22