?最近項目用到了es搜索引擎枷畏,行業(yè)對全文搜索引擎方面對es具有高度的評價,es基于目前最流行的開源Luence封裝的搜索服務(wù)器怎棱。具有分布式哩俭,響應(yīng)快速等優(yōu)點。
對es的基本了解可以參考
極客wiki ?http://wiki.jikexueyuan.com/project/elasticsearch-definitive-guide-cn/?
官網(wǎng) https://www.elastic.co/products/elasticsearch
es中幾個重要的概念_index拳恋,_type凡资,_id,shards分片
聯(lián)想到關(guān)系數(shù)據(jù)庫中相關(guān)關(guān)系∠读蓿可以做以下理解
Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices? -> Types? -> Documents -> Fields
數(shù)據(jù)庫對應(yīng)es的索引index,數(shù)據(jù)庫中的表table對應(yīng)es的_type,數(shù)據(jù)表中的行數(shù)據(jù)對應(yīng)es中的document文檔垦藏,數(shù)據(jù)表中的列對應(yīng)es中的field。理解好了這幾個基本概念伞访,那么繼續(xù)掂骏,由于es是分布式的,默認(rèn)的接口有http通信的9200接口厚掷,以及為集群通信的9300端口弟灼。
準(zhǔn)備一臺linux服務(wù)器,寫文章時我的相關(guān)硬件配置如下
CentOS7,JRE8
相關(guān)軟件的百度網(wǎng)盤地址 http://pan.baidu.com/s/1cKsXDO
其中
elasticsearch-5.5.1.tar.gz是es的文件
elasticsearch-analysis-ik-5.5.0.zip是使用maven打包后的壓縮文件冒黑,只需解壓就可以使用
elasticsearch-head-master.zip是es的一個插件田绑,5.x之后需要使用node.js和grunt獨立運(yùn)行。
1安裝es及配置
由于es的安全策略需要使用非root的用戶抡爹,登陸centos后創(chuàng)建es組添加一個用戶es密碼為esearch
# groupadd es
#useradd es -g es -p esearch
#chown es:es -R /user/elasticsearch-5.5.1 ?//給文件夾賦予用戶組和用戶
如果遇到有權(quán)限相關(guān)的問題掩驱,使用chown <用戶名>? <文件/文件夾> 設(shè)置文件/文件夾的所屬用戶。例如以下的解壓后的es文件冬竟,需要使用chown -R es elasticsearch-5.5.1 來設(shè)置文件夾的歸屬
將elasticsearch-5.5.1.tar.gz上傳到centos的/opt目錄下
#tar -zxvf elasticsearch-5.5.1.tar.gz? //解壓縮文件獲得文件夾elasticsearch-5.5.1
#vi /opt/elasticsearch-5.5.1/config/elasticsearch.yml ? //編輯相關(guān)配置欧穴,需要如下的配置
network.host: es1.com ? ?//本來是綁定ip地址的,由于網(wǎng)絡(luò)的問題使用域名綁定泵殴,可在/etc/hosts中添加你的ip 域名映射苔可。
path.data: /var/elasticsearch/data ? //設(shè)置存放數(shù)據(jù)的目錄
path.logs: /var/elasticsearch/logs ?//設(shè)置存放日志的目錄
discovery.zen.ping.unicast.hosts: ["es1.com"] ? //由于集群還未搭建。這里先放自己進(jìn)去.可不配置
discovery.zen.minimum_master_nodes: 1 //設(shè)置嘴下的主節(jié)點數(shù)為1 袋狞,默認(rèn)3,這里可不配置
修改后映屋,保存文件
到此苟鸯,基本配置結(jié)束,不過別急棚点,如果你開始啟動的話早处,肯定報錯。大概有如下瘫析,java分配的內(nèi)存不夠砌梆,max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
核心就這幾個錯誤
1,修改 vi /opt/elasticsearch-5.5.1/config/jvm.properties 文件贬循,設(shè)置-Xms256 ?-Xmx256咸包。由于默認(rèn)配置是2g配置,這個對于我使用虛擬機(jī)搭建的來說耗不起杖虾。烂瘫。正式環(huán)境可以考慮不改萧豆。
2,修復(fù)262144問題
使用root賬戶執(zhí)行
#sysctl -w vm.max_map_count=262144
#sysctl -a|grep vm.max_map_count ?//可以查看修改的結(jié)果肢专,如果要永久生效執(zhí)行以下
# cat /etc/sysctl.conf | grep -v "vm.max_map_count" > /tmp/system_sysctl.conf
# echo "vm.max_map_count=262144" >> /tmp/system_sysctl.conf
# mv /tmp/system_sysctl.conf /etc/sysctl.conf ? //提示是否覆蓋妻枕,輸入y
# cat /etc/sysctl.conf ?//查看更改是否有效,一般會出現(xiàn)以下葛账,輸出
vm.max_map_count=262144
# sysctl -p ? //需要使用root用戶柠衅。用戶之間的切換使用su username
3,修復(fù)65535問題使用root用戶
# cp /etc/security/limits.conf /etc/security/limits.conf.bak
//注意一下的es hard nofile.es是指代的上面創(chuàng)建的es用戶名
# echo "es hard nofile 65536" >> /tmp/system_limits.conf
# echo "es soft nofile 65536" >> /tmp/system_limits.conf
# mv /tmp/system_limits.conf /etc/security/limits.conf
修復(fù)完成后籍琳,啟動es菲宴。(注意centos的防火墻對9200,9100巩割,9300的限制)
#最后不知道為什么裙顽,
# /opt/elasticsearch-5.5.1/bin/ealsticsearch ? ?//需要切換到es用戶執(zhí)行命令,加上-d是后臺啟動宣谈。
此時可以看到相關(guān)的日志愈犹。如果沒保存的話,使用http:ip:9200 就會回調(diào)對應(yīng)的json數(shù)據(jù)闻丑。you know for search等信息漩怎。
2 插件的安裝
es的head插件適用于數(shù)據(jù)查詢與分析,當(dāng)然不適合做監(jiān)控嗦嗡。
在我的網(wǎng)盤中下載elasticsearch-head-master.zip文件
上傳到/opt目錄下并使用unzip elasticsearch-head-master.zip 解壓勋锤,切換到對于目錄下
#cd /opt/elasticsearch-head-master
由于head插件需要安裝node.js和grunt。最開始我是拒絕的侥祭,因為es以前的版本是直接可以放到es的plugins目錄下跟隨es節(jié)點一起啟動叁执,之后就禁用了這種方式,目前以下的方案是使用grunt啟動這個插件矮冬。安裝好node.js環(huán)境后使用grunt server就能單獨的和es節(jié)點通信谈宛,獲取相關(guān)集群狀態(tài)及發(fā)送命令。
2.1 安裝node.js
網(wǎng)盤地址:http://pan.baidu.com/s/1pLPsmld ?這是6.11.2.tar.xz文件胎署,需要2步
# xz -d *.tar.xz ?//能獲得tar文件吆录,對tar文件再提取
#tar -xvf *.tar? //獲得node-v6.11.2-linux-x64文件夾,切換進(jìn)入
#bin/node -v ?//如果沒問題會出現(xiàn)v6.11.2
//將node的源文件路徑加入到環(huán)境中去琼牧,使任何位置都可以使用node命令
# ln -s /opt/node-v6.11.2-linux-x64/bin/node /usr/local/bin/node
# ln -s /opt/node-v6.11.2-linux-x64/bin/npm ? /usr/local/bin/npm
至此在/usr/local/bin下加了連個軟連接恢筝。接下來開始使用npm安裝grunt
由于國內(nèi)墻的問題,使用npm安裝軟件很慢巨坊,所以一般建議使用國內(nèi)的鏡像撬槽。
#npm config set registry http://registry.npm.taobao.org ? //設(shè)置淘寶源
2.2 安裝grunt
切換到/opt/elasticsearch-head-master執(zhí)行以下,可能需要耐心等待
# npm install grunt --save ?
安裝成功后看到node_modules相關(guān)文件
修改es的elasticsearch.yml趾撵,添加
http.cors.enabled: true
http.cors.allow-origin: "*"
配置恢氯,方便head插件能訪問到結(jié)點。
#node_modules/grunt/bin/grunt server ?//啟動插件
使用ip:9100可以看到想界面。點擊連接勋拟,就可以查看相關(guān)信息勋磕。
3. 安裝中文分詞器ik
在以上提供的網(wǎng)盤中下載elasticsearch-analysis-ik-5.5.0.zip ?這個壓縮文件已經(jīng)使用maven package了,只需解壓敢靡,并修改配置文件挂滓。切換到ed用戶到/opt/elasticsearch-5.5.1/plugins
#mkdir ik?
#cd ik
#unzip elasticsearch-analysis-ik-5.5.0.zip ? //將文件傳到ik下,并解壓
解壓后會有些jar包和一些配置文件啸胧,由于ik需要和es的版本對應(yīng)赶站,在github上下載的最新ik版本為5.5.0和本篇使用的5.5.1不匹配。在啟動es節(jié)點的時候會報錯纺念,固以下手動修改了ik的版本號為5.5.1
編輯plugin-descriptor.properties文件贝椿,修改elasticsearch.version=5.5.1
最后啟動節(jié)點,會提示ik插件也加入到了es中陷谱。
最后烙博,關(guān)于集群的搭建。和以上相似烟逊,只是額外多了對elasticsearch.yml中集群名字(集群中的節(jié)點需要一直)和節(jié)點名稱配置渣窜,配置discovery.zen.ping.unicast.hosts與discovery.zen.minimum_master_nodes。其余節(jié)點可以不配置head插件宪躯。
至此強(qiáng)大的Elasticsearch就搭建好了乔宿。接下來準(zhǔn)備好在API的海洋中翻滾吧。访雪。.