返回目錄:http://www.cnblogs.com/hanyinglong/p/5464604.htmlhtml
a. Elasticsearch是一個基於Lucene的開源搜索引擎,不管是在開源仍是專有領域,Lunce被認爲是迄今爲止最早進、性能最好、功能最全的搜索引擎庫,可是Lucene只是一個庫,想要使用它,您必須使用Java來做爲開發語言並將其直接繼承到你的應用中,更糟糕的是Lucene很是複雜,你須要深刻了解檢索的相關只是來理解它是如何工做的。java
b. Elasticsearch也使用Java開發而且使用Lucene做爲其核心來實現全部索引和搜索的功能,可是它的目的是經過簡單的RESTful API來隱藏Lucene的複雜性,從而使其全文檢索變得簡單,不過Elasticsearch不只僅是Lucene和全文檢索,請看下面的描述:node
b.1 分佈式的實時文件存儲,每一個字段都被索引而且可被搜索linux
b.2 分佈式的實時分析搜索引擎編程
b.3 能夠擴展到上百臺服務器,處理PB級結構化或非結構化數據api
c. 並且這些功能都被集成到一個服務裏面,你的應用能夠經過簡單的RESTful API、各類語言的客戶端甚至命令行與之交互(這篇文章說的就是這點)。服務器
d. lucene的簡單學習過程請參考:http://www.cnblogs.com/hanyinglong/p/5387816.html網絡
e.Elasticsearch學習文檔:http://es.xiaoleilu.com/curl
a. 在第一篇文章中咱們對Elasticsearch已經有了簡單的瞭解而且在Linux下面配置訪問成功了,若是你們沒有配置,請參考第一篇文章進行配置而且瞭解。jvm
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
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。
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。
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建立增刪改索引。
天天一點點都是進步
若是文章哪裏存在問題,歡迎你們指出來,我會在第一時間修改。