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-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依賴於以下工件及其傳遞依賴性:
- 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
來控制哪個節點接收請求,有關自定義選項的更多示例,請參閱低階別客戶端文件。