一、 ElasticSearch介紹(簡稱ES)java
ES即爲了解決原生Lucene使用的不足,優化Lucene的調用方式,並實現了高可用的分佈式集羣的搜索方案。windows
首先,ES的索引庫管理支持依然是基於Apache Lucene(TM)的開源搜索引擎。api
ES也使用Java開發並使用Lucene做爲其核心來實現全部索引和搜索的功能,可是它的目的是經過簡單的 RESTful API來隱藏Lucene的複雜性,從而讓全文搜索變得簡單。服務器
Lucene直接經過java API調用,而ES把這些API調用過程進行了的封裝爲簡單RESTful請求,讓咱們調用起來更加簡單.restful
不過,ES的核心不在於Lucene,其特色更多的體現爲:curl
分佈式的實時文件存儲,每一個字段都被索引並可被搜索jvm
分佈式的實時分析搜索引擎elasticsearch
能夠擴展到上百臺服務器,處理PB級結構化或非結構化數據分佈式
高度集成化的服務,你的應用能夠經過簡單的 RESTful API、各類語言的客戶端甚至命令行與之交互。工具
上手Elasticsearch很是容易。它提供了許多合理的缺省值,並對初學者隱藏了複雜的搜索引擎理論。它擁有開瓶即飲的效果(安裝便可使用),只需不多的學習既可在生產環境中使用。
Lucene和ES的聯繫和區別(項目中爲啥使用ES而不用Lucene):
聯繫:ElasticSearch封裝了Lucene,讓使用變得更簡單,在高可用上面作得更好。
區別:ElasticSearch除了擁有Lucene全部優勢之外,還擁有本身優勢.
可用性:支持集羣,沒有單點故障
擴展性:支持集羣擴展
在集羣環境使用:
ElasticSearch:搜索引擎服務器,全部項目都統一訪問索引服務器,能夠支持在集羣環境使用.
Lucene :搜索引擎工具包,必須集成到項目中使用,而在集羣環境下,多個服務器都有本身Lucene文件,因此不統一. 不支持在集羣環境使用
支持多種語言:ElasticSearch支持不少語言,Lucene支持java。
簡單性:ElasticSearch簡單,都是http請求;而Lucene比較複雜,都要調用API執行一大堆操做
通常lucene在中小型項目中使用(可是也能使用es),而ES在大型項目中使用.由於ES支持在集羣環境使用,而且自身也支持集羣.
二、ES的組成&交互方式
ES由:服務端、客戶端、RestfulAPI組成。
交互方式(基於Restful API):
ES和全部客戶端的交互都是使用JSON格式的數據。
其餘全部程序語言均可以使用RESTful API,經過9200端口的與ES進行通訊,在開發測試階段,你可使用你喜歡的WEB客戶端, curl命令以及火狐的POSTER插件方式和ES通訊。
三、ES的安裝
ES服務只依賴於JDK,推薦使用JDK1.7+。
① 下載ES安裝包
官方下載地址:https://www.elastic.co/downloads/elasticsearch
本文以在window環境下,ES 5.2.2版本爲例,下載對應的ZIP文件。
②安裝
因爲是綠色版本,解壓縮就能安裝.
③ 運行ES
改一下jvm.options,而後在在bin目錄下運行elasticsearch.bat(bin/elasticsearch.bat)。
④ 驗證
訪問:http://localhost:9200/
看到上圖信息,恭喜你,你的ES集羣已經啓動而且正常運行。
四、ES的客戶端
ES客戶端能夠分爲圖形界面客戶端和代碼客戶端。
圖形界面客戶端有多個,要選擇一個合適的。使用選擇好的圖形界面客戶端
和代碼客戶端使用restfulapi操做es服務端。
4.1 圖形界面客戶端 9200
① Curl命令方式:
默認windows下不支持curl命令。
②火狐的POSTER插件界面:
相似於Firebug,在火狐的「擴展」中搜索「POSTER」,並安裝擴展工具。
使用POSTER模擬請求的效果
③輔助管理工具Kibana5
① Kibana5.2.2下載地址:https://www.elastic.co/downloads/kibana
② 解壓並編輯config/kibana.yml,設置elasticsearch.url的值爲已啓動的ES
③ 啓動Kibana5 : bin\kibana.bat
④ 默認訪問地址:http://localhost:5601
Discover:可視化查詢分析器
Visualize:統計分析圖表
Dashboard:自定義主面板(添加圖表)
Timelion:Timelion是一個kibana時間序列展現組件(暫時不用)
Dev Tools :Console(同CURL/POSTER,操做ES代碼工具,代碼提示,很方便)
Management:管理索引庫(index)、已保存的搜索和可視化結果(save objects)、設置 kibana 服務器屬性。
4.2 Java代碼客戶端 9300
略