Easticsearch通信方式_API


目錄

  返回目錄:http://www.cnblogs.com/hanyinglong/p/5464604.html

1.Elasticsearch概念

  a. Elasticsearch是一個基於Lucene的開源搜索引擎,無論是在開源還是專有領域,Lunce被認為是迄今為止最先進、性能最好、功能最全的搜索引擎庫,但是Lucene只是一個庫,想要使用它,您必須使用Java來作為開發語言並將其直接繼承到你的應用中,更糟糕的是Lucene非常復雜,你需要深入了解檢索的相關只是來理解它是如何工作的。

  b. Elasticsearch也使用Java開發並且使用Lucene作為其核心來實現所有索引和搜索的功能,但是它的目的是通過簡單的RESTful API來隱藏Lucene的復雜性,從而使其全文檢索變得簡單,不過Elasticsearch不僅僅是Lucene和全文檢索,請看下面的描述:

    b.1 分布式的實時文件存儲,每個字段都被索引並且可被搜索

    b.2 分布式的實時分析搜索引擎

    b.3 可以擴展到上百台服務器,處理PB級結構化或非結構化數據

  c. 而且這些功能都被集成到一個服務里面,你的應用可以通過簡單的RESTful API、各種語言的客戶端甚至命令行與之交互(這篇文章說的就是這點)。

  d. lucene的簡單學習過程請參考:http://www.cnblogs.com/hanyinglong/p/5387816.html

  e.Elasticsearch學習文檔:http://es.xiaoleilu.com/

2.Elasticsearch通信方式

  a. 在第一篇文章中我們對Elasticsearch已經有了簡單的了解並且在Linux下面配置訪問成功了,如果大家沒有配置,請參考第一篇文章進行配置並且了解。

  b. 那么當我們配置完成之后需要干什么呢?當然是對Elasticsearch進行操作了(增刪改查),但是在操作之前,我們是不是先要知道如何與Elasticsearch進行通信呢,於Elasticsearch通信的方式非常多,我們可以通過簡單的RESTful API、各種語言的客戶端和命令行與之通信,在本博客中我們使用Java、.NET客戶端和命令行進行通信說明,下面我會闡述這三種方式。

  c. 簡單說明一下Elasticsearch的集群和節點的概念

    c.1 節點(node)是Elasticsearch運行的實例。

    c.2 集群就是一組有着同樣cluster.name的節點,他們協同工作,互相分享數據,提供了故障轉移和擴展的功能,當然一個節點也可以是一個集群。

    c.3 您最好找一個合適的名字來替代cluster.name的默認值,比如您自己的名字,這樣就可以防止一個新啟動的節點加入到相同網絡中的另一個同名的集群中。

    c.4 可以通過修改config/目錄下的elasticsearch.yml文件,然后重啟Elasticsearch來替換節點名稱,當Elasticsearch在前台運行的時候,可以使用ctrl+c快捷鍵終止,或者你也可以調用shutdown API來關閉:

      curl -XPOST 'http://192.168.37.133:9200/_shutdown'

  d. 關於集群后面我會對其進行再次的說明,我對Elasticsearch已經做了集群,但是配置方法研究的還不是很明白,后面研究明白了會給大家分享出來。

  e.Elasticsearch學習:https://www.elastic.co/guide/index.html

3. 基於Http協議,以JSON為數據交互格式的RESTful API

  a. 編程中的大部分語言都可以使用RESTful API,通過9200端口於Elasticsearch進行通信,你可以使用你拿手的技術來用,甚至Elasticsearch可以通過curl命令與Elasticsearch通信。

  b. 使用curl向Elastic發出的請求的組成部分與其他普通的Http請求時一樣的,格式如下:

    curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>'-d'<BODY>'

    b.1 VERB               HTTP方法:GET、POST、PUT、HEAD、DELETE

    b.2 PROTOCOL     http或者https協議(只有在Elasticsearch前面有https代理的時候可用)

    b.3 HOST              Elasticsearch集群中的任何一個節點的主機名,如果是在本地的節點,則為:localhost、127.0.0.1

    b.4 PROT              Elasticsearch Http服務所在的端口,默認為9200

    b.5 PATH              API路徑(例如_count將返回集群中文檔的數量),Path可以包含多個組件,例如_cluster/stats或者_nodes/stats/jvm

    b.6 QUERY_STRING 一些可選的查詢請求參數,例如?pretty參數將使請求返回更加美觀易讀的JSON數據

    b.7 BODY              一個JSON格式的請求主體。

  c.上面我們簡單說了一下使用curl的格式,下來簡單的使用一下這個命令(首先在linux下找到安裝的Elasticsearch,啟動(./bin/elasticsearch)),命令如圖所示:

    

    c.1 上面的命令為發送請求的命令,下面的命令為發送請求之后響應的命令

    c.2 發送請求之后,Elasticsearch會返回一個類似於200 OK的HTTP狀態碼和JSON格式的響應主題,如上圖返回的響應信息所示:

    c.3 但是我們在這里發現我們沒有看到HTTP表頭呢?那是因為在curl里面要顯示,必須在curl命令后面跟 -i參數,如下圖所示:

     

  d.后面會專門寫博客來使用curl操作Elasticsearch。 

4. Java API

  a. Elasticsearch為Java用戶提供了兩種內置的客戶端:

    a.1 節點客戶端(node client):節點客戶端以無數據節點(node data node)身份加入集群,換言之,他自己不存儲任何數據,但是它知道數據在集群中的具體位置,並且能夠直接轉發請求到對應的節點上。

    a.2 傳輸客戶端(transport client):更輕量的客戶端,能夠發送請求到遠程集群,它自己不加入集群,只是簡單轉發請求給集群中的節點。

  b. 兩個Java客戶端都通過9300端口和集群交互,使用Elasticsearch傳輸協議(ELasticsearch Transport Protocol),集群中的節點之間也是通過9300端口進行通信,如果此端口未開放,你的節點將不能組成集群。

  c. Java客戶端所在的Elasticsarch必須與集群中其它的節點一致,否則可能無法互相識別。

  d. 詳細信息請參考:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index.html

  e. 后面會專門寫一篇博客來使用Java操作ELasticsearch。

5. .NET API

  a. .NET API和Java API基本一樣,也是含有開源的組件。

  b. 詳細信息請參考:https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/index.html

  c. 后面會專門寫一篇博客來使用.NET操作ELasticsearch。 

 

        通過這篇文章,我們了解了ELasticsearch是如何進行通訊的,那么接下來我們將會說一下Elasticsearch索引以及使用CURL創建增刪改索引。

    每天一點點都是進步

      如果文章哪里存在問題,歡迎大家指出來,我會在第一時間修改。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM