1. 程式人生 > 其它 >ElasticSearch 客戶端API

ElasticSearch 客戶端API

技術標籤:java

ElasticSearch提供有多種語言的客戶端API操作和訪問文件,支援Java,JavaScrpit,Perl,Ruby等。不過其本質上都是REST介面,通過HTTP協議進行文件資料的操作。同時ElasticSearch還內建Painless指令碼語言,可在API中直接使用。

1.REST介面

ElasticSearch提供的所有介面都以下劃線“_”開頭,在ElasticSearch中,可以使用四種HTTP方法請求索引(GET,PUT,DELETE,HEAD)。

PUT 用於建立索引

GET 用於檢視索引

DELETE 用於刪除索引

HEAD 用於檢驗索引存在性,存在返回200狀態碼,不存在返回404狀態碼

REST介面一般都對應一個資源,在ElasticSearch在操作索引時可以在URI中指定多個,也可以使用萬用字元匹配多個索引,也可以使用_all代表所有索引。如:

GET all/_search GET */_search

2.Painless指令碼

ElasticSearch中許多介面都支援指令碼做動態運算,其中Painless是ElasticSearch支援最好的一種指令碼語言。在5.0版本後提供,語法上於Java語言基本相同,最終會被編譯為位元組碼執行在JVM上。

3.Java API

ElasticSearch官方提供的Java客戶端API底層也是基於HttpClient框架,在此基礎上進行了封裝。分為低階REST客戶端(Low Level REST Client)和高階REST客戶端(HighLevel REST Client)兩種。

低階REST客戶端(Low Level REST Client)

使用RestClient物件連線ElasticSearch,在建立RestClient物件時可以指定多個節點地址以實現負載均衡,不會對請求進行編碼和響應解碼,在使用結束後需要呼叫close方法釋放RestClient佔用的資源,所有Elasticsearch版本相容。

maven依賴:

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-client</artifactId>
    <version>${elasticsearch.client.version}</version>
</dependency>

高階REST客戶端(HighLevel REST Client)

高階REST客戶端建立在低階REST客戶端基礎上,將對ElasticSearch訪問的介面都封裝成物件和方法,更加面向物件。使用的連線ElasticSearch的物件是RestHighLeveClient,在使用結束後需要呼叫close方法釋放資源。

maven依賴:

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>${elasticsearch.client.version}</version>
</dependency>