无法实例化接口 'ElasticsearchClient'

Cannot instantiate interface 'ElasticsearchClient'

official Elasticsearch docs 告诉我们像这样实例化 ElasticsearchClient

ElasticsearchClient client = new ElasticsearchClient(transport);

在我的 Grails 3 应用程序中使用 Gradle 构建管理编写此代码后,出现以下编译错误:Cannot instantiate interface 'ElasticsearchClient'

import 语句为:import org.elasticsearch.client.ElasticsearchClient。 事实上,ElasticsearchClient 被解决为:

package org.elasticsearch.client;
// ...
public interface ElasticsearchClient {

Gradle 依赖项是:compile 'org.elasticsearch:elasticsearch:7.17.2'

  1. 为什么他们建议在他们的文档中实例化一个接口?
  2. 如何让它编译并使用 Elasticsearch 客户端?

原因是:ElasticsearchClient 是 mis-resolved 一个旧的 elasticsearch JAR 文件,它仍然在我本地用户的 .gradle 目录中。从 .gradle 中删除旧 JAR 使我能够进行正确的导入。

正确的导入是 import co.elastic.clients.elasticsearch.ElasticsearchClient 代替 import org.elasticsearch.client.ElasticsearchClient