除非你真的需要加入 Elasticsearch 集群,否则我会避免使用 Elasticsearch 提供的 Java 类。如果您确实以这种方式连接到 Elasticsearch,则需要使 Elasticsearch 和您的应用程序使用的 JVM 版本保持同步。
相反,您可以使用 GitHub 上的 Jest 客户端连接到 Elasticsearch。这将允许您通过 REST 接口连接到 Elasticsearch,就像所有其他客户端库一样。
您需要为 Elasticsearch 创建一个简单的配置块,以指定 REST 接口的 URL。此外,您还需要创建一个 Manager 来启动和停止 JestClient。
更新:您可以在 GitHub 上找到我用于连接到 Elasticsearch 的 Dropwizard 包。以下是 Java 8 的一些基本使用说明:
在项目的 POM 中包含捆绑包的依赖项。
<dependency>
<groupId>com.meltmedia.dropwizard</groupId>
<artifactId>dropwizard-jest</artifactId>
<version>0.1.0</version>
</dependency>
在应用程序配置的某处定义 JestConfiguraion 类。
import com.meltmedia.dropwizard.jest.JestConfiguration;
...
@JsonProperty
protected JestConfiguration elasticsearch;
public JestConfiguration getElasticsearch() {
return jest;
}
然后在您的应用程序的initialize 方法中包含捆绑包。
import com.meltmedia.dropwizard.jest.JestBundle;
...
protected JestBundle jestBundle;
@Override
public void initialize(Bootstrap<ExampleConfiguration> bootstrap) {
bootstrap.addBundle(jestBundle = JestBundle.<ExampleConfiguration>builder()
.withConfiguration(ExampleConfiguration::getElasticsearch)
.build());
}
最后,使用捆绑包访问客户端供应商。
@Override
public void run(ExampleConfiguration config, Environment env) throws Exception {
JestClient client = jestBundle.getClientSupplier().get();
}