Elasticsearch簡稱ES,是一個基於Lucene構建的開源、分佈式、Restful接口的全文搜索引擎,仍是一個分佈式文檔數據庫。天生就是分佈式、高可用、可擴展的,能夠在很短的時間內存儲、搜索和分析大量的數據。前端
全文搜索也叫全文檢索,是指掃描文章中的每個詞,對每個詞進創建一個索引,指明該詞在文章中出現的次數和位置,當前端用戶輸入的關鍵詞發起查詢請求後,搜索引擎就會根據事先創建的索引進行查找,並將查詢的結果響應給用戶。 這裏有兩個關鍵字:分詞和索引,Elasticsearch內部會完成這兩件事情,對保存的文本內容按規則進行分詞,並對這些分詞後的詞條創建索引,供用戶查詢。java
全文搜索過程根據關鍵詞建立的索引叫倒排索引,顧名思義,創建正向關係「文本內容-關鍵詞」叫正排索引,後續會介紹,倒排索引就是把原有關係倒過來,創建成「關鍵詞-文本內容」的關係,這樣的關係很是利於搜索。 舉個例子:node
先進行英文分詞,再創建倒排索引,獲得一份簡易的「關鍵詞-文本」的映射關係以下:python
關鍵詞 | 文本編號 |
---|---|
I | 1,2 |
have | 1,2 |
a | 1,2 |
friend | 1 |
who | 1 |
loves | 1 |
smile | 1 |
dream | 2 |
today | 2 |
有了這個映射表,搜索"have"關鍵詞時,當即就能返回id爲1,2的兩條記錄,搜索today時,返回id爲2的記錄,這樣的搜索性能很是高。固然Elasticsearch維護的倒排索引包含更多的信息,此處只是做簡易的原理介紹。git
搜索類場景 常見的搜索場景好比說電商網站、招聘網站、新聞資訊類網站、各類app內的搜索。github
日誌分析類場景 經典的ELK組合(Elasticsearch/Logstash/Kibana),能夠完成日誌收集,日誌存儲,日誌分析查詢界面基本功能,目前該方案的實現很普及,大部分企業日誌分析系統都是使用該方案。數據庫
數據預警平臺及數據分析場景 例如電商價格預警,在支持的電商平臺設置價格預警,當優惠的價格低於某個值時,觸發通知消息,通知用戶購買。 數據分析常見的好比分析電商平臺銷售量top 10的品牌,分析博客系統、頭條網站top 10關注度、評論數、訪問量的內容等等。瀏覽器
商業BI系統 比大型零售超市,須要分析上一季度用戶消費金額,年齡段,天天各時間段到店人數分佈等信息,輸出相應的報表數據,並預測下一季度的熱賣商品,根據年齡段定向推薦適宜產品。Elasticsearch執行數據分析和挖掘,Kibana作數據可視化。安全
架構各組件簡單釋義:restful
https://www.elastic.co/cn/ 上面有各版本的下載地址,官方文檔和使用示例,請自行下載安裝包。
https://github.com/elastic/elasticsearch 上面有各版本的源碼地址,能夠切換到指定版本進行研究,目前選用版本爲6.3.1
{ "name" : "node-1", "cluster_name" : "hy-application", "cluster_uuid" : "lJ4DRWOvQauAy-VEYiZc2g", "version" : { "number" : "6.3.1", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "eb782d0", "build_date" : "2018-06-29T21:59:26.107521Z", "build_snapshot" : false, "lucene_version" : "7.3.1", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
本篇簡單介紹了Elasticsearch的基本概念,適用場景和主要的功能框架,以及最簡單的用於學習驗證的安裝啓動步驟,做爲Elasticsearch系統的開篇學習,Elasticsearch有個特色就是開箱即用,若是是用做學習,或是中小型應用,數據量比較少、操做不是很複雜的話,直接啓動就能夠用了。後續的Elasticsearch學習,如無特別說明,均以6.3.1版本爲例。
專一Java高併發、分佈式架構,更多技術乾貨分享與心得,請關注公衆號:Java架構社區