asticsearch是基于Apache 2.0開源的實時、分布式、分析搜索引擎,相比Lucene,Elasticsearch的上手比較容易,這篇文章主要紀(jì)錄Elasticsearch的基本概念和基本API。

官方對Elasticsearch的定義:

Elasticsearch is a distributed, RESTful search and analytics engine capable of solving a growing number of use cases. As the heart of the Elastic Stack, it centrally stores your data so you can discover the expected and uncover the unexpected.


你可能已經(jīng)在Elasticsearch的文檔中看過如下詞匯:

  • NRT: 近實時(Near Realtime),當(dāng)一個文檔保存至index,短暫的延遲后就可以被搜索。

  • Node: 指單個實例,存儲文檔并參與所在集群的索引和搜索,一臺機(jī)器可以運(yùn)行多個實例,每個實例啟動時都有自己的唯一標(biāo)識。

  • Cluster: 指多個實例組成的集群,集群中的節(jié)點(diǎn)有相同的cluster.name(默認(rèn)為"elasticsearch"),用戶可以通過集群對多個節(jié)點(diǎn)的所有數(shù)據(jù)進(jìn)行索引和搜索。

  • Index: 索引在Elasticsearch中有兩種含義。作為名詞,索引可以指文檔的集合,作為動詞,可以說"對某個文檔進(jìn)行索引",也就是把文檔存儲到索引。一個index的名稱即為其標(biāo)識,名稱必須為小寫。如果和RDBMS相比的話,index的概念可能和database比較相似。

  • Type: 用于對同一個index中的數(shù)據(jù)進(jìn)行邏輯分類。例如,有個存儲了sns數(shù)據(jù)的index,這個index中可能存在多個類型,例如用戶資料數(shù)據(jù)、評論數(shù)據(jù)、聊天數(shù)據(jù)...

  • Document: 文檔以JSON格式存儲,文檔中包含多個字段,每個文檔都有自己的類型并存儲于index中。

  • Shards: index可以切分成多個shard,每個shard分布到不同的節(jié)點(diǎn)上。通過shard可以在存儲還是搜索上緩解單個節(jié)點(diǎn)的壓力。

  • Replicas: 對shard進(jìn)行復(fù)制,通過副本不僅保證了可用性,也提高了搜索效率。

一個index可以分為多個shard,默認(rèn)配置下,每個index有5個primary shards和1個副本(也就是5個replica shards),也就是說這個index有10個shards。


為了進(jìn)一步說明,這里簡單說明一下安裝過程。
首先需要確認(rèn)機(jī)器上是否已經(jīng)安裝了Java,這里建議使用java 8:

java -versionecho $JAVA_HOME

網(wǎng)友評論