4

Java High Level REST Client 入门

本节描述从获取工件到在应用程序中使用它如何开始使用高级别REST客户端。

兼容性

Java High Level REST Client需要Java 1.8,并依赖于Elasticsearch核心项目,客户端版本与客户端开发的Elasticsearch版本相同,它接受与TransportClient相同的请求参数,并返回相同的响应对象,如果需要将应用程序从TransportClient迁移到新的REST客户端,请参阅迁移指南。

High Level Client保证能够与运行在相同主版本和大于或等于的次要版本上的任何Elasticsearch节点通信。当它与Elasticsearch节点通信时,它不需要在同一个次要版本中,因为它是向前兼容的,这意味着它支持与Elasticsearch的更高的版本进行通信,而不是与其开发的版本进行通信。

6.0客户端能够与任何6.x Elasticsearch节点通信,而6.1客户端肯定能够与6.1,6.2和任何更高版本的6.x版本通信,但是,如果6.1客户端支持6.0节点不知道的某些API的新请求主体字段,则在与先前的Elasticsearch节点版本通信时可能存在不兼容问题,例如在6.1和6.0之间。

建议在将Elasticsearch集群升级到新的主要版本时升级High Level Client,因为REST API重要更改可能会导致意外结果,具体取决于请求命中的节点,并且只有较新版本的客户端才支持新添加的API,一旦集群中的所有节点都升级到新的主版本,客户端应该总是在最后更新。

Javadoc

可以在https://artifacts.elastic.co/javadoc/org/elasticsearch/client/elasticsearch-rest-high-level-client/6.4.2/index.html找到REST高级别客户端的javadoc。

Maven仓库

高级别Java REST客户端托管在Maven Central上,所需的最低Java版本为1.8

High Level REST Client与Elasticsearch具有相同的发布周期,将版本替换为想要的客户端版本。

如果你正在寻找SNAPSHOT版本,可以通过https://snapshots.elastic.co/maven/获取Elastic Maven Snapshot仓库。

Maven配置

以下是如何使用maven作为依赖关系管理器来配置依赖关系,将以下内容添加到pom.xml文件中

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>6.4.2</version>
</dependency>

Gradle配置

以下是使用gradle作为依赖关系管理器配置依赖关系的方法,将以下内容添加到build.gradle文件中:

dependencies {
    compile 'org.elasticsearch.client:elasticsearch-rest-high-level-client:6.4.2'
}

Lucene Snapshot仓库

任何主要版本(如测试版)的最新版本可能都是基于Lucene Snapshot版本构建的,在这种情况下,你将无法解析客户端的Lucene依赖关系。

例如,如果要使用依赖于Lucene 7.0.0-snapshot-00142c96.0.0-beta1版本,则必须定义以下存储库。

对于Maven:

<repository>
    <id>elastic-lucene-snapshots</id>
    <name>Elastic Lucene Snapshots</name>
    <url>http://s3.amazonaws.com/download.elasticsearch.org/lucenesnapshots/00142c9</url>
    <releases><enabled>true</enabled></releases>
    <snapshots><enabled>false</enabled></snapshots>
</repository>

对于Gradle:

maven {
    url 'http://s3.amazonaws.com/download.elasticsearch.org/lucenesnapshots/00142c9'
}

依赖关系

High Level Java REST Client依赖于以下工件及其传递依赖性:

  • org.elasticsearch.client:elasticsearch-rest-client
  • org.elasticsearch:elasticsearch

初始化

RestHighLevelClient实例需要按如下方式构建REST低级别客户端构建器:

RestHighLevelClient client = new RestHighLevelClient(
        RestClient.builder(
                new HttpHost("localhost", 9200, "http"),
                new HttpHost("localhost", 9201, "http")));

高级别客户端将在内部创建用于根据提供的构建器执行请求的低级别客户端,该低级别客户端维护一个连接池并启动一些线程,因此当你完好无损地关闭高级别客户端时,它将关闭内部低级别客户端以释放这些资源,这可以通过close来完成:

client.close();

在关于Java High Level Client的本文档的其余部分中,RestHighLevelClient实例将被引用为client

RequestOptions

RestHighLevelClient中的所有API都接受RequestOptions,你可以用来不会改变Elasticsearch执行请求的的方式自定义请求。例如,你可以在此处指定NodeSelector来控制哪个节点接收请求,有关自定义选项的更多示例,请参阅低级别客户端文档。


上一篇:Elasticsearch Java REST Client(嗅探器)
下一篇:Index API

博弈
2.5k 声望1.5k 粉丝

态度决定一切