本節描述從獲取工件到在應用程序中使用它如何開始使用高級別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
來控制哪一個節點接收請求,有關自定義選項的更多示例,請參閱低級別客戶端文檔。