Elasticsearch 是一個建立在全文搜索引擎 Apache Lucene(TM) 基礎上的搜索引擎,可以說 Lucene 是當今最先進,最高效的全功能開源搜索引擎框架。
Elasticsearch是基于Apache Lucene的搜索服務器。它由Shay Banon開發并于2010年發布?,F在是由Elasticsearch BV負責維護。其最新版本是:5.2.0
。
Elasticsearch是一個實時分布式和開源的全文搜索和分析引擎。 它可以從RESTful Web服務接口訪問,并使用模式少JSON(JavaScript對象符號)文檔來存儲數據。它是基于Java編程語言,這使Elasticsearch能夠在不同的平臺上運行。使用戶能夠以非??斓乃俣葋硭阉鞣浅4蟮臄祿?。
Elasticsearch的特性
Elasticsearch的一般特性如下 -
- Elasticsearch可擴展高達PB級的結構化和非結構化數據。
- Elasticsearch可以用來替代MongoDB和RavenDB等做文檔存儲。
- Elasticsearch使用非標準化來提高搜索性能。
- Elasticsearch是受歡迎的企業搜索引擎之一,目前被許多大型組織使用,如Wikipedia,The Guardian,StackOverflow,GitHub等。
- Elasticsearch是開放源代碼,可在Apache許可證版本
2.0
下提供。
Elasticsearch的主要概念
Elasticsearch的主要概念如下 -
節點 - 它指的是Elasticsearch的單個正在運行的實例。單個物理和虛擬服務器容納多個節點,這取決于其物理資源的能力,如RAM,存儲和處理能力。
集群 - 它是一個或多個節點的集合。 集群為整個數據提供跨所有節點的集合索引和搜索功能。
索引 - 它是不同類型的文檔和文檔屬性的集合。索引還使用分片的概念來提高性能。 例如,一組文檔包含社交網絡應用的數據。
類型/映射 - 它是共享同一索引中存在的一組公共字段的文檔的集合。 例如,索引包含社交網絡應用的數據,然后它可以存在用于用戶簡檔數據的特定類型,另一類型可用于消息的數據,以及另一類型可用于評論的數據。
文檔 - 它是以JSON格式定義的特定方式的字段集合。每個文檔都屬于一個類型并駐留在索引中。每個文檔都與唯一標識符(稱為UID)相關聯。
碎片 - 索引被水平細分為碎片。這意味著每個碎片包含文檔的所有屬性,但包含的數量比索引少。水平分隔使碎片成為一個獨立的節點,可以存儲在任何節點中。主碎片是索引的原始水平部分,然后這些主碎片被復制到副本碎片中。
副本 - Elasticsearch允許用戶創建其索引和分片的副本。 復制不僅有助于在故障情況下增加數據的可用性,而且還通過在這些副本中執行并行搜索操作來提高搜索的性能。
Elasticsearch的優點
- Elasticsearch是基于Java開發的,這使得它在幾乎每個平臺上都兼容。
- Elasticsearch是實時的,換句話說,一秒鐘后,添加的文檔可以在這個引擎中搜索得到。
- Elasticsearch是分布式的,這使得它易于在任何大型組織中擴展和集成。
- 通過使用Elasticsearch中的網關概念,創建完整備份很容易。
- 與Apache Solr相比,在Elasticsearch中處理多租戶非常容易。
- Elasticsearch使用JSON對象作為響應,這使得可以使用不同的編程語言調用Elasticsearch服務器。
- Elasticsearch支持幾乎大部分文檔類型,但不支持文本呈現的文檔類型。
Elasticsearch的缺點
Elasticsearch在處理請求和響應數據方面沒有多語言和數據格式支持(僅在JSON中可用),與Apache Solr不同,Elasticsearch不可以使用CSV,XML等格式。
Elasticsearch也有一些傷腦的問題發生,雖然在極少數情況下才會發生。
Elasticsearch和RDBMS之間的比較
在Elasticsearch中,索引是類型的集合,因為數據庫是RDBMS(關系數據庫管理系統)中表的集合。每個表都是行的集合,就像每個映射都是JSON對象的Elasticsearch集合一樣。
Elasticsearch | 關系數據庫 |
---|---|
索引 | 數據庫 |
碎片 | 碎片 |
映射 | 表 |
字段 | 字段 |
JSON對象 | 元組 |
易百教程移動端:請掃描本頁面底部(右側)二維碼并關注微信公眾號,回復:"教程" 選擇相關教程閱讀或直接訪問:http://m.yiibai.com 。
加QQ群啦,易百教程官方技術學習群
注意:建議每個人選自己的技術方向加群,同一個QQ最多限加 3 個群。