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

官方對(duì)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的文檔中看過(guò)如下詞匯:

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

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

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

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

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

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

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

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

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


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

java -versionecho $JAVA_HOME

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式