ElasticSearch及IK分詞插件相關安裝
一. 簡介
- ElasticSearch是一個基于Lucene的搜索服務器。它提供了一個分布式多用戶能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java開發的,并作為Apache許可條款下的開放源碼發布,是當前流行的企業級搜索引擎。設計用于云計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。
- Elasticsearch-head是一個界面化的集群操作和管理工具,他是通過html5編寫,可以對集群進行傻瓜式操作。
- IK Analyzer是一個開源的,基于java語言開發的輕量級的中文分詞工具包。從2006年12月推出1.0版開始, IKAnalyzer已經推出了4個大版本。最初,它是以開源項目Luence為應用主體的,結合詞典分詞和文法分析算法的中文分詞組件。從3.0版本開 始,IK發展為面向Java的公用分詞組件,獨立于Lucene項目,同時提供了對Lucene的默認優化實現。在2012版本中,IK實現了簡單的分詞 歧義排除算法,標志著IK分詞器從單純的詞典分詞向模擬語義分詞衍化。
二. 下載軟件包
-
ElasticSearch下載
官網:https://download.elasticsearch.org/
三. 安裝部署
-
創建worker用戶,下載安裝包到
/home/worker/soft
下[worker@LFTp-SysOP-01 soft]$ ll total 206224 -rw-r----- 1 worker worker 29007342 Feb 29 16:52 elasticsearch-2.1.1.tar.gz -rw-r----- 1 worker worker 899251 Mar 18 15:36 elasticsearch-head-master.zip -rw-r----- 1 worker worker 181260798 Dec 23 05:31 jdk-8u65-linux-x64.gz
-
安裝JDK
#創建目錄,解壓移動JDK到新建目錄下 cd /home/worker/soft/ mkdir -p /home/worker/usr/local/ tar -xf jdk-8u65-linux-x64.gz mv jdk1.8.0_65 /home/worker/usr/local/ #添加環境變量 vim ~/.bash_profile export PATH export JAVA_HOME=/home/worker/usr/local/jdk1.8.0_65 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH #修改最大文件打開數 sudo vim /etc/security/limits.d/90-nproc.conf worker soft nproc 65535
-
安裝Elasticsearch
#解壓文件,移動到指定目錄下 [worker@LFTp-SysOP-01 soft]$ tar -xf elasticsearch-2.1.1.tar.gz [worker@LFTp-SysOP-01 soft]$ mv elasticsearch-2.1.1 /home/worker/opt/ [worker@LFTp-SysOP-01 soft]$ ln -s /home/worker/opt/elasticsearch-2.1.1/ /home/worker/opt/elasticsearch [worker@LFTp-SysOP-01 soft]$ ll /home/worker/opt/elasticsearch lrwxrwxrwx 1 worker worker 37 Mar 19 02:42 /home/worker/opt/elasticsearch -> /home/worker/opt/elasticsearch-2.1.1/ #修改集群配置文件 /home/worker/opt/elasticsearch/config vim elasticsearch.yml cluster.name: my-application node.name: node-1 discovery.zen.ping.unicast.hosts: ["host1", "host2"] discovery.zen.minimum_master_nodes: 3 **備注:每個節點的node.name的名字不同** #配置開機啟動 echo '/home/worker/opt/elasticsearch/bin/elasticsearch -d' >> /e tc/rc.local echo 'export PATH=/home/worker/opt/elasticsearch/bin/elasticsearch:$PATH' >> ~/.bash_profile #配置啟動關閉腳本 #!/bin/bash start(){ /home/worker/opt/elasticsearch/bin/elasticsearch -d } stop(){ ps -ef|grep elasticsearch|grep -v grep |awk '{print $2}'|xargs kill -9 } restart(){ /home/worker/opt/elasticsearch/bin/elasticsearch -d && ps -ef|grep elasticsearch|grep -v grep |awk '{print $2}'|xargs kill -9 } case $1 in start) echo 'start elasticsearch.' ;; stop) echo 'stop elasticsearch.' ;; restart) echo 'restart elasticsearch.' ;; *) echo $"Usage: $0 {start|stop|restart}" exit 1 esac #優化配置 ES_HEAP_SIZE=2048m MAX_OPEN_FILES=65535
-
安裝ik分詞插件
#創建ik目錄,將zip包解壓到目錄 mkdir /home/worker/soft/ik cd /home/worker/soft/ik unzip ../elasticsearch-analysis-ik-1.7.0.zip #拷貝ik目錄到elasticsearch配置文件下 cp -r config/ik /home/worker/opt/elasticsearch/config/ #重啟elasticsearch服務 /home/worker/opt/elasticsearch/bin/elasticsearch -d && ps -ef|grep elasticsearch|grep -v grep |awk '{print $2}'|xargs kill -9
-
安裝Elasticsearch-head
#解壓zip包到plugins目錄下 cd /home/worker/opt/elasticsearch/plugins unzip /home/worker/soft/elasticsearch-head-master.zip #移動elasticsearch-head-master到head目錄下 mv elasticsearch-head-master head #重啟elasticsearch服務 /home/worker/opt/elasticsearch/bin/elasticsearch -d && ps -ef|grep elasticsearch|grep -v grep |awk '{print $2}'|xargs kill -9 #測試 http://localhost:9200/_plugin/head/
四. 測試ik分詞效果
創建一個索引,名為index
curl -XPUT http://localhost:9200/index
為索引index創建mapping
curl -XPOST http://localhost:9200/index/fulltext/_mapping -d' { "fulltext": { "_all": { "analyzer": "ik" }, "properties": { "content": { "type" : "string", "boost" : 8.0, "term_vector" : "with_positions_offsets", "analyzer" : "ik", "include_in_all" : true } } } }'
-
測試
curl 'http://localhost:9200/index/_analyze?analyzer=ik&pretty=true' -d ' { "text":"世界如此之大" }'
#顯示效果 { "tokens" : [ { "token" : "text", "start_offset" : 4, "end_offset" : 8, "type" : "ENGLISH", "position" : 1 }, { "token" : "世界", "start_offset" : 11, "end_offset" : 13, "type" : "CN_WORD", "position" : 2 }, { "token" : "如此", "start_offset" : 13, "end_offset" : 15, "type" : "CN_WORD", "position" : 3 }, { "token" : "之大", "start_offset" : 15, "end_offset" : 17, "type" : "CN_WORD", "position" : 4 } ] }