ElasticSearch採用REST API,所有的操作都可通過HTTP API完成,例如增刪改查、別名配置等。
Elasticsearch是一個基於Apache Lucene(TM)的開源搜索引擎。
無論在開源還是專有領域, Lucene可以被認爲是迄今爲止最先進、性能最好的、功能最全的搜索引擎庫。
但是,Lucene只是一個庫。想要使用它,你必須使用Java來作爲開發語言並將其直接集成到 你的應用中,更糟糕的是,Lucene非常複雜,你需要深入瞭解檢索的相關知識來理解它是如 何工作的。Elasticsearch也使用Java開發並使用Lucene作爲其核心來實現所有索引和搜索的功能,
但是 它的目的是通過簡單的 RESTful API 來隱藏Lucene的複雜性,從而讓全文搜索變得簡。
使用REST Client交互
客戶端訪問僅支持HTTP / TCP方式,建議您採用Elasticsearch官方提供的Java REST Client。
使用Java API交互
Elasticsearch爲Java用戶提供了內置客戶端。關於Java API的更多信息,請查看官方Java API文檔。
傳輸客戶端(Transport client)
傳輸客戶端能夠發送請求到遠程集羣,它自己不加入集羣,只是簡單轉發請求給集羣中的節點。
傳輸客戶端通過9300端口與集羣交互,使用Elasticsearch傳輸協議(Elasticsearch Transport Protocol)。
集羣中的節點之間也通過9300端口進行通信。如果此端口未開放,您的節點將不能組成集羣。
說明 Java客戶端所在的Elasticsearch版本必須與集羣中其他節點一致,否則它們可能無法相互識別。
RESTful API(HTTP)
其他所有程序語言都可以使用RESTful API,通過9200端口與Elasticsearch進行通信。可使用您喜歡的Web客戶端,或通過curl命令與Elasticsearch通信。
說明 Elasticsearch官方提供了多種程序語言的客戶端,例如Groovy、Javascript、.NET、PHP、Perl、Python以及Ruby。
還有很多由社區提供的客戶端和插件,您可以在官方文檔中獲取。
curl請求組成(HTTP)
curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'
VERB:HTTP方法,包括GET、POST、PUT、HEAD、DELETE。
PROTOCOL:http或者https協議(只有在Elasticsearch前面有https代理的時候可用)。
HOST:Elasticsearch集羣中的任何一個節點的主機名,如果是在本地的節點,那麼可使用localhost。
PORT:Elasticsearch HTTP服務所在的端口,默認爲9200。
PATH:API路徑(例如_count將返回集羣中文檔的數量),PATH可以包含多個組件,例如_cluster/stats或者_nodes/stats/jvm。
QUERY_STRING: 一些可選的查詢請求參數,例如?pretty參數可使請求返回的JSON數據更加美觀易讀。
BODY:一個JSON格式的請求主體(如果請求需要的話)。
示例
1.統計Elasticserach集羣中文檔數命令:
curl -XGET http://localhost:9200/_count?pretty
返回:
{
"count" : 86547,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
}
}