Elasticsearch 是一個分布式的開源搜索和分析引擎,適用于所有類型的數據,包括文本、數字、地理空間、結構化和非結構化數據。Elasticsearch 在 Apache Lucene 的基礎上開發而成,由 Elasticsearch N.V.(即現在的 Elastic)于 2010 年首次發布。Elasticsearch 以其簡單的 REST 風格 API、分布式特性、速度和可擴展性而聞名,是 Elastic Stack 的核心組件;Elastic Stack 是適用于數據采集、充實、存儲、分析和可視化的一組開源工具。人們通常將 Elastic Stack 稱為 ELK Stack(代指 Elasticsearch、Logstash 和 Kibana),目前 Elastic Stack 包括一系列豐富的輕量型數據采集代理,這些代理統稱為 Beats,可用來向 Elasticsearch 發送數據。
一、Elasticsearch是什么
Elasticsearch 是一個分布式可擴展的實時搜索和分析引擎,一個建立在全文搜索引擎 Apache Lucene? 基礎上的搜索引擎.當然 Elasticsearch 并不僅僅是 Lucene 那么簡單,它不僅包括了全文搜索功能,還可以進行以下工作:
- 分布式實時文件存儲,并將每一個字段都編入索引,使其可以被搜索。
- 實時分析的分布式搜索引擎。
- 可以擴展到上百臺服務器,處理PB級別的結構化或非結構化數據。
二 Elasticsearch能干什么
-
提供快速查詢
試想一下,當你打開一個博客網站,搜索一篇博客的時候,等待了一分鐘才有搜索結果,那將會是一個極差的體驗。可想而知,這個博客網站肯定沒有使用搜索引擎處理搜索的請求,而是使用了傳統的關系型數據庫查詢,在龐大的數據面前,關系型數據庫的查詢就顯得力不從心,相當耗時。Elasticsearch在這個時候可以幫上忙,使用博客數據建立索引庫,依賴倒排索引的優勢,為用戶快速的呈現搜索的相關結果。
-
確保結果的相關性
接下來有一個難題: 如何將真正描述選舉的帖子排序在前呢?有了 Elasticsearch,就可以使 用幾個算法來計算相關性的得分( relevancy score ),然后根據分數來將結果逐個排序 。
默認情況下,計算文檔相關性得分的算法是TF-IDF(term frequency-inverse document frequency),詞頻逆文檔頻率。我們將在后面討論這個概念。除了選擇算法,Elasticsearch還提供了很多其他內置的功能來計算概相關性得分,以滿足定制需求。
- 超越精確匹配
- 處理錯誤的拼寫
當我們在使用搜索時,會出現英文拼寫錯誤,中文錯別字等情況時有發生。我們可以通過配置讓Elasticsearch容忍一些錯誤,而不僅僅只是查找精確匹配。如我們輸入“book”的時候由于手誤輸入了“bok”,如果搜索引擎能夠意識到這一錯誤并且在搜索時幫我們修正這個錯誤,那么搜索會更快讓人滿意。
- 支持變體
這個特性在英文單位搜索時,比較重要,我們搜索一個博客關鍵詞包含“bicycle”的文章,同樣可以和“bicylist”或“cycling”的查詢匹配上。并且Elasticsearch還有可以將搜索到的關鍵詞加粗上色來凸顯。
3.使用統計信息
當用戶不太清楚具體要搜索什么的時候,可以通過幾種方式來協助他們 。一種方法是聚集統計數據。 聚集是在搜索結果里得到一些統計數據,如每個分類有多少議題、每個分 類中“贊”和“分享”的平均數量。 假想一下,進入博客時,用戶會在右側看見最近流行的議題。 其中之一是自行車。 對其感興趣的讀者會點擊這個標題,進一步縮小范圍。 然后, 可能還有另外 的聚集方式 ,將自行車相關的帖子分為“ 自行車鑒賞”“自行車大事件”等。
- 給予自動提示
當用戶開始輸入時,你可以幫助他們發現主流的查詢和結果。 還可以通過自動提示技術預測 他們所要輸入的內容,就像 Web 上很多搜索引擎做的那樣。 你同樣可以展示主流的結果,通過 特殊的查詢類型來匹配前綴、通配符或正則表達式。
三、Elasticsearch的特點
(1)可以作為一個大型分布式集群(數百臺服務器)技術,處理PB級數據,服務大公司;也可以運行在單機上,服務小公司
(2)Elasticsearch不是什么新技術,主要是將全文檢索、數據分析以及分布式技術,合并在了一起,才形成了獨一無二的ES;lucene(全文檢索),商用的數據分析軟件(也是有的),分布式數據庫(mycat)
(3)對用戶而言,是開箱即用的,非常簡單,作為中小型的應用,直接3分鐘部署一下ES,就可以作為生產環境的系統來使用了,數據量不大,操作不是太復雜
(4)數據庫的功能面對很多領域是不夠用的(事務,還有各種聯機事務型的操作);特殊的功能,比如全文檢索,同義詞處理,相關度排名,復雜數據分析,海量數據的近實時處理;Elasticsearch作為傳統數據庫的一個補充,提供了數據庫所不能提供的很多功能