Elasticsearch is a search engine based on the Lucene library. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents.
即:
ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口。
通俗的講:
elasticsearch就是一個分佈式、高性能、高可用、可伸縮的搜索和分析系統web
一提到搜索咱們可能會想到百度,好比說咱們想找尋任何信息的時候,就會上百度去搜索一下,找一部本身喜歡的電影,或者找一本喜歡的書,或者找一條感興趣的新聞。
通俗的來說,搜索就是在任何場景下,找尋你想要的信息,這個時候,會輸入一段你要搜索的關鍵字,而後就指望找到這個關鍵字相關的有些信息。算法
作軟件開發的話,或者對IT、計算機有必定的瞭解的話,都知道,數據都是存儲在數據庫裏面的,好比說電商網站的商品信息,招聘網站的職位信息,新聞網站的新聞信息等等。因此說,很天然的數據庫
一、每條記錄的指定字段的文本可能會很長,好比說商品描述字段的長度,有長達數千個,甚至數萬個字符,這個時候,每次都要對每條記錄的全部文本進行掃描服務器
二、不能講搜索詞拆分開來,儘量去搜索更多的符合你指望的結果,好比生化機,就搜索不出來生化危機
這些場景下,用數據庫來實現搜索是太不靠譜的,一般來講,性能也會很是差。elasticsearch
全文檢索:計算機索引程序經過掃描文章中的每一個詞,對每個詞創建一個索引,指明該詞在文章中出現的次數和位置,當用戶查詢時,檢索程序就根據事先創建的索引進行查找,並將查找的結果反饋給用戶的檢索方式。這個過程相似於經過字典中的檢索字表查字的過程。分佈式
對於倒排索引,也就是ES在全文檢索時對每一個詞創建索引是採用倒排索引的方式。
它源於實際應用中須要根據屬性的值來查找記錄。這中索引表中的每一項都包括一個屬性值和具備該屬性值的各記錄的地址。因爲不是由記錄來肯定屬性值,而是由屬性值來肯定記錄的位置,於是稱爲倒排索引。ide
lucene就是一個全文檢索引擎工具包,裏面包含了封裝好的各類創建倒排索引,以及進行搜索的代碼,包括各類算法。工具
這裏附上中華石衫老師畫的手工圖,哈哈哈!!!性能
簡言之就是elasticsearch就是對lucene的一個封裝,讓複雜的lucene變得簡單化,更易用。
例如:
一、自動維護數據將分佈到多個節點的索引的創建,還有搜索請求分佈到多個節點的執行網站
二、自動維護數據的冗餘副本,保證說,一些數據宕機了,不會丟失任何的數據
三、封裝了更多的高級功能,以給咱們提供更多高級的支持,讓咱們快速的開發應用。開發更多的複雜的應用:複雜的搜索功能、聚合分析功能、基於地理位置的搜索