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>