1. 程式人生 > >Elasticsearch搜尋引擎第十四篇-Java客戶端呼叫

Elasticsearch搜尋引擎第十四篇-Java客戶端呼叫

文章目錄

ES支援多種程式語言客戶端

Elasticsearch支援多種程式語言客戶端,如下:
在這裡插入圖片描述
官網地址:https://www.elastic.co/guide/en/elasticsearch/client/index.html

ES 提供的客戶端連線方式

  • REST API,埠9200
  • Transport連線,埠9300

Java REST Client

ES提供兩個Java REST Client版本

  • Java Low Level REST Client(少用): 低級別的REST客戶端,通過http與叢集互動,使用者需自己編組請求JSON串,及解析響應JSON串。相容所有ES版本。
  • Java High Level REST Client(常用): 高級別的REST客戶端,基於低級別的REST客戶端,增加了編組請求、解析響應等相關api。

Java Low Level REST Client

因為低級別的REST客戶端用的比較少,這裡不展開說明,可以直接參考官網說明。

特點、maven引入、使用介紹參考:
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-low.html

API doc請參考:
https://artifacts.elastic.co/javadoc/org/elasticsearch/client/elasticsearch-rest-client/6.2.4/index.html

Java High Level REST Client(常用)

從6.0.0開始加入的,目的是以java面向物件的方式來進行請求、響應處理。

每個API 支援 同步/非同步 兩種方式,同步方法直接返回一個結果物件。非同步的方法以 async 為字尾,通過listener 引數來通知結果。

高階java REST 客戶端依賴Elasticsearch core project

相容性說明:

  • 依賴 java1.8 和 Elasticsearch core project
  • 請使用與服務端ES版本一致的客戶端版本,否則會出錯!!!

maven中引入:

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

Java High Level REST Client 初始化

//給定叢集的多個節點地址,將客戶端負載均衡地向這個節點地址集發請求
RestHighLevelClient client = new RestHighLevelClient(
        RestClient.builder(
                new HttpHost("localhost", 9200, "http"),
                new HttpHost("localhost", 9201, "http")));

client不再使用的話,要關閉:

client.close();

API及使用例項,參考官網:
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.4/java-rest-high-supported-apis.html

Java Client

java client 使用 TransportClient,各種操作本質上都是非同步的(可以用 listener,或返回 Future )。

注意:ES的發展規劃中在7.0版本開始將廢棄 TransportClient,8.0版本中將完全移除 TransportClient,取而代之的是High Level REST Client。

High Level REST Client 中的操作API和java client 大多是一樣的。

官方學習連結:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index.html

maven中引入:

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>transport</artifactId>
    <version>6.4.3</version>
</dependency>

初始化客戶端:

//連線叢集設定
Settings settings = Settings.builder()
        .put("cluster.name", "myClusterName").build();
		
//連線的transport地址,注意埠為9300
TransportClient client = new PreBuiltTransportClient(settings)
        .addTransportAddress(new TransportAddress(InetAddress.getByName("host1"), 9300))
        .addTransportAddress(new TransportAddress(InetAddress.getByName("host2"), 9300));

//在關閉時記得關閉客戶端物件
client.close();

其他API操作可以直接參考官網,官網資料非常齊全