Elasticsearch 是一個(gè)建立在全文搜索引擎 Apache Lucene(TM) 基礎(chǔ)上的搜索引擎,可以說 Lucene 是當(dāng)今最先進(jìn),最高效的全功能開源搜索引擎框架。
Elasticsearch是基于Apache Lucene的搜索服務(wù)器。它由Shay Banon開發(fā)并于2010年發(fā)布。現(xiàn)在是由Elasticsearch BV負(fù)責(zé)維護(hù)。其最新版本是:5.2.0
。
Elasticsearch是一個(gè)實(shí)時(shí)分布式和開源的全文搜索和分析引擎。 它可以從RESTful Web服務(wù)接口訪問,并使用模式少JSON(JavaScript對象符號(hào))文檔來存儲(chǔ)數(shù)據(jù)。它是基于Java編程語言,這使Elasticsearch能夠在不同的平臺(tái)上運(yùn)行。使用戶能夠以非常快的速度來搜索非常大的數(shù)據(jù)量。
Elasticsearch的一般特性如下 -
2.0
下提供。Elasticsearch的主要概念如下 -
節(jié)點(diǎn) - 它指的是Elasticsearch的單個(gè)正在運(yùn)行的實(shí)例。單個(gè)物理和虛擬服務(wù)器容納多個(gè)節(jié)點(diǎn),這取決于其物理資源的能力,如RAM,存儲(chǔ)和處理能力。
集群 - 它是一個(gè)或多個(gè)節(jié)點(diǎn)的集合。 集群為整個(gè)數(shù)據(jù)提供跨所有節(jié)點(diǎn)的集合索引和搜索功能。
索引 - 它是不同類型的文檔和文檔屬性的集合。索引還使用分片的概念來提高性能。 例如,一組文檔包含社交網(wǎng)絡(luò)應(yīng)用的數(shù)據(jù)。
類型/映射 - 它是共享同一索引中存在的一組公共字段的文檔的集合。 例如,索引包含社交網(wǎng)絡(luò)應(yīng)用的數(shù)據(jù),然后它可以存在用于用戶簡檔數(shù)據(jù)的特定類型,另一類型可用于消息的數(shù)據(jù),以及另一類型可用于評論的數(shù)據(jù)。
文檔 - 它是以JSON格式定義的特定方式的字段集合。每個(gè)文檔都屬于一個(gè)類型并駐留在索引中。每個(gè)文檔都與唯一標(biāo)識(shí)符(稱為UID)相關(guān)聯(lián)。
碎片 - 索引被水平細(xì)分為碎片。這意味著每個(gè)碎片包含文檔的所有屬性,但包含的數(shù)量比索引少。水平分隔使碎片成為一個(gè)獨(dú)立的節(jié)點(diǎn),可以存儲(chǔ)在任何節(jié)點(diǎn)中。主碎片是索引的原始水平部分,然后這些主碎片被復(fù)制到副本碎片中。
副本 - Elasticsearch允許用戶創(chuàng)建其索引和分片的副本。 復(fù)制不僅有助于在故障情況下增加數(shù)據(jù)的可用性,而且還通過在這些副本中執(zhí)行并行搜索操作來提高搜索的性能。
Elasticsearch在處理請求和響應(yīng)數(shù)據(jù)方面沒有多語言和數(shù)據(jù)格式支持(僅在JSON中可用),與Apache Solr不同,Elasticsearch不可以使用CSV,XML等格式。
Elasticsearch也有一些傷腦的問題發(fā)生,雖然在極少數(shù)情況下才會(huì)發(fā)生。
在Elasticsearch中,索引是類型的集合,因?yàn)閿?shù)據(jù)庫是RDBMS(關(guān)系數(shù)據(jù)庫管理系統(tǒng))中表的集合。每個(gè)表都是行的集合,就像每個(gè)映射都是JSON對象的Elasticsearch集合一樣。
Elasticsearch | 關(guān)系數(shù)據(jù)庫 |
---|---|
索引 | 數(shù)據(jù)庫 |
碎片 | 碎片 |
映射 | 表 |
字段 | 字段 |
JSON對象 | 元組 |