Elastisearch相關

話說最近一直在搞關於Elasticsearch的東西。尼瑪驀然發現我好想和搜索還有大叔據真的搞到一塊兒去了==#好吧,由於最近比較忙,所以這次先寫個大概的概述好了。

ElasticSearch這玩意兒呢,主要是建立在lucene這個Full text index的java庫上面的。其實基於這個Java庫的其他的全文搜索引擎server還有很多,包括大名鼎鼎的Solr,基本屬於發展很成熟啊,之類之類的,估計要說缺點的話就是商用的話需要付錢==#

不過Stackoverflow上關於各種Full text index的討論有很多很多,包括對於Lucene, Solr, Sphinx, ElasticSearch的對比,ElasticSearch的作者也現身說法表述了一下他的好處,和Solr相比:

Superior distributed model和Easily for use.

也就是說,其實對於其他方面的主要功能而言,其實是大差不差的,而且可能很多時候Solr或許更加成熟一點。

然後就是一些專業術語的說明啦,如果你是對於Lucene有一定了解的話基本可以忽略了,因爲貌似是差不多的(廢話,人家都說了是基於Lucene的了好麼)

1. Cluster

不多說,和所有分佈式數據庫一樣。傳說中的集羣。由節點組成.

2. Node

組成Cluster的基本單位。一個Node就是一個ElasticSearch的實例。不一定是一個單獨的server哦。。。可以聯想一下爲僞分佈式的Hadoop……Node可以作爲master,可以做Slave,也可以既不做master也不做slave,僅僅用來進行通信。master的選舉過程和Amazon的dynamo比較相似,是一種p2p的gossip選舉方式。不過貌似比那個還要簡單一些。一個集羣只能有一個master,所以你在同時啓動多個節點的時候如果沒有時間差就會產生腦裂的現象(親眼觀察到啊。。。尼瑪和精神分裂是一個道理)。

Split Brain是ES目前的一個bug,到現在還沒有解決的。

3. Shard

所謂的數據庫分片是也。Shard的數量要大於等於node的數量,方便以後的scale~所以說~做事情得爲以後掂量着點兒~

4. replica

不多說,副本。 一個primary shard可以有多個replica,用來保證HA


簡單的使用了一下ES,在這邊說,想要使用ES做底層數據庫的話可以有兩種方式,一種是java方式,調用ES正統的API進行Query之類的,另一種方式是使用JSON, 其實JSON纔是比較推薦的方式。簡單,又容易嵌入到web應用當中去。不過如果數據集比較大而且又是每天都會進行更新的話,建議參考ES的River系列插件的寫法寫插件上傳數據,不然會很悲痛的。

其實ES還是一個正在發展的開源項目,有很多地方都還很不完善,比如說多中document類型的支持,不是他不想,而是他還沒來得及做,而且社區現在還不夠龐大,當然是相對於Solr而言。不過作爲一個輕量級的解決方案是很不錯的,而且尤其是不需要定義任何scheme的特點,其實還是很不錯的,但是需要大量的DIY和良好的設計。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章