本节描述从获取工件到在应用程序中使用它如何开始使用高级别REST客户端。html
Java High Level REST Client须要Java 1.8,并依赖于Elasticsearch核心项目,客户端版本与客户端开发的Elasticsearch版本相同,它接受与TransportClient
相同的请求参数,并返回相同的响应对象,若是须要将应用程序从TransportClient
迁移到新的REST客户端,请参阅迁移指南。java
High Level Client保证可以与运行在相同主版本和大于或等于的次要版本上的任何Elasticsearch节点通讯。当它与Elasticsearch节点通讯时,它不须要在同一个次要版本中,由于它是向前兼容的,这意味着它支持与Elasticsearch的更高的版本进行通讯,而不是与其开发的版本进行通讯。segmentfault
6.0客户端可以与任何6.x Elasticsearch节点通讯,而6.1客户端确定可以与6.1,6.2和任何更高版本的6.x版本通讯,可是,若是6.1客户端支持6.0节点不知道的某些API的新请求主体字段,则在与先前的Elasticsearch节点版本通讯时可能存在不兼容问题,例如在6.1和6.0之间。elasticsearch
建议在将Elasticsearch集群升级到新的主要版本时升级High Level Client,由于REST API重要更改可能会致使意外结果,具体取决于请求命中的节点,而且只有较新版本的客户端才支持新添加的API,一旦集群中的全部节点都升级到新的主版本,客户端应该老是在最后更新。maven
能够在https://artifacts.elastic.co/javadoc/org/elasticsearch/client/elasticsearch-rest-high-level-client/6.4.2/index.html找到REST高级别客户端的javadoc。测试
高级别Java REST客户端托管在Maven Central上,所需的最低Java版本为1.8
。gradle
High Level REST Client与Elasticsearch具备相同的发布周期,将版本替换为想要的客户端版本。ui
若是你正在寻找SNAPSHOT版本,能够经过https://snapshots.elastic.co/maven/获取Elastic Maven Snapshot仓库。url
如下是如何使用maven做为依赖关系管理器来配置依赖关系,将如下内容添加到pom.xml
文件中线程
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>6.4.2</version> </dependency>
如下是使用gradle做为依赖关系管理器配置依赖关系的方法,将如下内容添加到build.gradle
文件中:
dependencies { compile 'org.elasticsearch.client:elasticsearch-rest-high-level-client:6.4.2' }
任何主要版本(如测试版)的最新版本可能都是基于Lucene Snapshot版本构建的,在这种状况下,你将没法解析客户端的Lucene依赖关系。
例如,若是要使用依赖于Lucene 7.0.0-snapshot-00142c9
的6.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依赖于如下工件及其传递依赖性:
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
。
RestHighLevelClient
中的全部API都接受RequestOptions
,你能够用来不会改变Elasticsearch执行请求的的方式自定义请求。例如,你能够在此处指定NodeSelector
来控制哪一个节点接收请求,有关自定义选项的更多示例,请参阅低级别客户端文档。