鍍金池/ 教程/ Java/ Elasticsearch教程
Elasticsearch搜索API
Elasticsearch教程
Elasticsearch填充
Elasticsearch測試
Elasticsearch分析
Elasticsearch映射
Elasticsearch入門教程
Elasticsearch版本之間遷移
Elasticsearch集群API
Elasticsearch模塊
Elasticsearch環(huán)境安裝配置
Elasticsearch聚合
Elasticsearch查詢DSL
Elasticsearch索引API
Elasticsearch API約定
Elasticsearch文檔API

Elasticsearch教程

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的特性

Elasticsearch的一般特性如下 -

  • Elasticsearch可擴(kuò)展高達(dá)PB級(jí)的結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。
  • Elasticsearch可以用來替代MongoDB和RavenDB等做文檔存儲(chǔ)。
  • Elasticsearch使用非標(biāo)準(zhǔn)化來提高搜索性能。
  • Elasticsearch是受歡迎的企業(yè)搜索引擎之一,目前被許多大型組織使用,如Wikipedia,The Guardian,StackOverflow,GitHub等。
  • Elasticsearch是開放源代碼,可在Apache許可證版本2.0下提供。

Elasticsearch的主要概念

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ōu)點(diǎn)

  • Elasticsearch是基于Java開發(fā)的,這使得它在幾乎每個(gè)平臺(tái)上都兼容。
  • Elasticsearch是實(shí)時(shí)的,換句話說,一秒鐘后,添加的文檔可以在這個(gè)引擎中搜索得到。
  • Elasticsearch是分布式的,這使得它易于在任何大型組織中擴(kuò)展和集成。
  • 通過使用Elasticsearch中的網(wǎng)關(guān)概念,創(chuàng)建完整備份很容易。
  • 與Apache Solr相比,在Elasticsearch中處理多租戶非常容易。
  • Elasticsearch使用JSON對象作為響應(yīng),這使得可以使用不同的編程語言調(diào)用Elasticsearch服務(wù)器。
  • Elasticsearch支持幾乎大部分文檔類型,但不支持文本呈現(xiàn)的文檔類型。

Elasticsearch的缺點(diǎn)

  • Elasticsearch在處理請求和響應(yīng)數(shù)據(jù)方面沒有多語言和數(shù)據(jù)格式支持(僅在JSON中可用),與Apache Solr不同,Elasticsearch不可以使用CSV,XML等格式。

  • Elasticsearch也有一些傷腦的問題發(fā)生,雖然在極少數(shù)情況下才會(huì)發(fā)生。

Elasticsearch和RDBMS之間的比較

在Elasticsearch中,索引是類型的集合,因?yàn)閿?shù)據(jù)庫是RDBMS(關(guān)系數(shù)據(jù)庫管理系統(tǒng))中表的集合。每個(gè)表都是行的集合,就像每個(gè)映射都是JSON對象的Elasticsearch集合一樣。

Elasticsearch 關(guān)系數(shù)據(jù)庫
索引 數(shù)據(jù)庫
碎片 碎片
映射
字段 字段
JSON對象 元組