ElasticSearch筆記

ElasticSearch是基於Lucene的搜索服務,它提供分佈式多用戶的搜索引擎,支持Restful Web接口。


1. 對於es初學者,可能對關係型數據庫mysql更熟悉一些。兩者都能提供存儲和查詢。


MySQL  ElasticSearch
database index 
table type
row document
field field

2. ElasticSearch服務的搭建


(1)前提: jdk安裝

wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jdk-7u51-linux-x64.tar.gz
vim /etc/profile
JAVA_HOME=/opt/soft/jdk1.7.0_51
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
export PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export CLASSPATH
JRE_HOME=$JAVA_HOME/jre
export JRE_HOME

source /etc/profile

驗證設置是否生效 java -version (應該是需要重啓系統才能生效)


(2)安裝ES

https://www.elastic.co/downloads/elasticsearch

下載tar包,解壓縮。裏面有三個文件夾:bin是運行的腳本,config是設置文件,lib是放依賴的包。要裝插件的話就要新建一個plugins的文件夾,把插件放到這個文件夾中。

啓動起來先  bin/elasticsearch start



報UnknownHostException錯誤

解決方案: 

vi /etc/hosts

在hosts文件中加入主機的IP   zjm_45_12(主機名)  如: 127.0.0.1  localhost  zjm_45_12

測試是否正常 curl -i -XGET 'localhost:9200'



證明安裝啓動成功。


安裝插件。

1.  Head 插件 此插件可以幫助我們查看集羣狀態,集羣中的節點、索引以及索引中的數據一目瞭然,同時還支持結構化的查詢並自動生成對應的查詢Body,還支持通過自定義的查詢Body進行查詢,方便測試、調試。個人很喜歡這個插件。

sudo ln -s /opt/soft/elasticsearch-1.3.4/bin/plugin /usr/bin/plugin

plugin -install mobz/elasticsearch-head

http://blog.csdn.net/laigood/article/details/8193758

訪問方式: http://localhost:9200/_plugin/head/

2. bigdesk插件 一個集羣監控工具,可以通過它來查看es集羣的各種狀態,如:cpu、內存使用情況,索引數據、搜索情況,http連接數等。

plugin -install lukas-vlcek/bigdesk

訪問方式:  http://localhost:9200/_plugin/bigdesk/

3 suggester插件:

bin/plugin -install de.spinscale/elasticsearch-plugin-suggest/1.3.2-2.0.1

http://maxrocray.iteye.com/blog/1748172 

4. ik分詞插件:

       https://github.com/medcl/elasticsearch-analysis-ik
    http://blog.csdn.net/achilles12345/article/details/40248021

org.apache.http.client.ClientProtocolException類找不到異常,而且索引創建失敗。

       注意: 進行maven打包時,我查看源碼,原來作者爲了可以從遠程庫中動態加入新的分詞,就使用了httpclient來加載。然後查看了源碼的pom.xml文件,發現這個分詞器依賴:httpclient-4.3.5、httpcore-4.3.2、log4j-1.2.16、commons-logging-1.1.3、commons-codec-1.6幾個jar包。於是,就將這幾個jar包放在ES_HOMT/lib下,問題解決了

vim config/elasticsearch.yml


5. mmseg分詞插件: 

https://github.com/medcl/elasticsearch-analysis-mmseg


分佈式集羣

節點: ElasticSearch的一個實例。集羣由一個或多個節點組成。它們具有相同的cluster_name,協同工作、分享數據和負載。

索引:指向一個或多個分片的“邏輯命名空間”

分片:最小級別的“工作單元”。文檔存儲在分片中並且在分片中被索引,但應用程序不會直接與分片通信而是與索引通信。複製分片是主分片的一個副本,防止硬件故障導致的數據丟失。

兩節點三分片:


橫向擴展三節點三分片。Node3包含了分別來自Node 1和Node 2的一個分,每個節點上的分片將獲得更多的硬件資源(CPU、RAM、I/O)


繼續擴展 複製分片的數量從原來的1增加到2


應對故障 選舉Node2位Master


版本控制

悲觀併發控制

衝突經常發生,訪問區塊化。典型的例子就是在訪問一行數據前鎖定這行,然後確保只有加鎖的那個線程可以修改這行數據。

樂觀併發控制

衝突不經常發生,也不區塊化訪問,然而如果在讀寫過程中數據發生變化,更新將失敗。可以嘗試再次更新或直接反饋給用戶。

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