ELK-RESTful API

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
  }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章