基本概念
集群:一個(gè)或者多個(gè)elasticsearch節(jié)點(diǎn)組成的集合
索引:含有相同屬性的文檔集合,例如一個(gè)索引代表消費(fèi)者數(shù)據(jù),一個(gè)索引代表產(chǎn)品數(shù)據(jù)(相當(dāng)于MySQL的database)
類型:索引可以定義一個(gè)或多個(gè)類型爆阶,通常定義有相同字段的文檔作為一個(gè)類型斥扛,文檔必須屬于一個(gè)類型(相當(dāng)于MySQL的table)
文檔:文檔是可以被索引的基本數(shù)據(jù)單位,例如一個(gè)用戶的基本信息食茎,一片文章的數(shù)據(jù)蒂破,他是整個(gè)es里最小的存儲(chǔ)單位(相當(dāng)于MySQL的每一行具體的記錄)
單節(jié)點(diǎn)安裝
elasticsearch是基于java開發(fā)的,所以安裝之前需要先安裝版本大于等于1.8的jdk
jdk安裝:?下載---解壓---配置環(huán)境變量
下載地址:?https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html别渔,自己去這個(gè)地址下載附迷,因?yàn)樗麜?huì)帶一個(gè)認(rèn)證參數(shù)AuthParam
wget https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-i586.tar.gz?AuthParam=1551253769_ff54ba4acb29cacf09d358ec0798e55d
tar -zxvf jdk-8u201-linux-x64.tar.gz\?AuthParam\=1551253769_ff54ba4acb29cacf09d358ec0798e55d?
配置環(huán)境變量
sudo vi ~/.bash_profile
source ~/.bash_profile
elasticsearch安裝:?下載---解壓---配置---啟動(dòng)
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.2.tar.gz
tar -zxvf elasticsearch-6.6.2.tar.gz
sudo vi config/elasticsearch.yml
elasticsearch默認(rèn)安裝后設(shè)置的內(nèi)存是1GB,我這里只是自己的一個(gè)乞丐版本的服務(wù)器,內(nèi)存比較小哎媚,我就只給他分配256M(根據(jù)自己情況使用配置挟秤,如果內(nèi)存不夠的話,啟動(dòng)過程中會(huì)提示已殺死這類提示)
vi config/jvm.options
ps: 更多具體配置可以在elasticsearch官網(wǎng)查看
啟動(dòng): elasticsearch可以接收用戶輸入的腳本并且執(zhí)行抄伍,處于安全考慮艘刚,他不能root賬戶來啟動(dòng),不然會(huì)報(bào)下圖錯(cuò)誤
所以我需要為elasticsearch新建一個(gè)系統(tǒng)運(yùn)行賬號(hào)
groupadd?elasticsearch? ? ?//新建一個(gè)elasticsearch的用戶組
useradd -g?elasticsearch?elasticsearch? //在elasticsearch用戶組下面建立一個(gè)elasticsearch的用戶
將elasticsearch目錄的所有者給剛剛建立的賬號(hào)
chown -R elasticsearch:elasticsearch elasticsearch-6.6.2/
然后切換到剛剛的賬號(hào)啟動(dòng)elasticsearch
su elasticsearch
./elasticsearch-6.6.2/bin/elasticsearch
啟動(dòng)過程中可能會(huì)出現(xiàn)下面這類的錯(cuò)誤提示
錯(cuò)誤1:?elasticsearch這個(gè)用戶的最大打開線程數(shù)(3894)太低截珍,至少增加到4096
解決:
1. 查看用戶最大打開線程數(shù)
ulimit -a
2. 切換到root用戶攀甚,編輯文件
vi /etc/security/limits.conf
在文件末尾加上下面配置
* 表示匹配所有用戶, nproc 表示配置最大打開線程數(shù)
3. 退出從新登錄后岗喉,再次查看秋度,修改成功
錯(cuò)誤2:?最大虛擬內(nèi)存區(qū)域vm.max_map_count(65530)太低,至少增加到262144
解決:
在root賬號(hào)下修改配置文件
vi /etc/sysctl.conf
在末尾添加配置钱床,值大于等于實(shí)體的262144就可以
添加完成后執(zhí)行下面命令
sysctl -p
然后可以查看到成功修改成你設(shè)置的數(shù)字
上面問題解決后荚斯,切換成elasticsearch賬號(hào),繼續(xù)啟動(dòng)es,看到下圖的樣子證明就啟動(dòng)成功了
驗(yàn)證
瀏覽器輸入ip地址,加上自己在配置文件中配置的端口,比如我這里的9201訪問
我前面配置的host是0.0.0.0,所以可以用外網(wǎng)訪問,不需要外網(wǎng)訪問的話,就配置127.0.0.1或者對(duì)應(yīng)的內(nèi)網(wǎng)ip就行
安裝head插件
安裝好ES后,你就可以通過官網(wǎng)提供的相關(guān)命令開進(jìn)行索引的創(chuàng)建,但是更多人還是習(xí)慣用界面直接操作.這個(gè)時(shí)候就可以用elasticsearch-head這個(gè)插件了.elasticsearch-head 是用于監(jiān)控 ES 狀態(tài)的客戶端插件查牌,包括數(shù)據(jù)可視化事期、執(zhí)行增刪改查操作等(我就簡單暴露的把它理解成了像Navicat這類的工具).
git地址:?https://github.com/mobz/elasticsearch-head
安裝前準(zhǔn)備
在上面地址說明中可以看到,安裝他需要npm包管理工具,所以先在系統(tǒng)下安裝一下node.js吧
nodejs下載地址:?https://nodejs.org/en/download/
長期維護(hù)的版本可能不包含最新版本最新特性,但是比較穩(wěn)定,所以這里就用穩(wěn)定的版本吧.可以選擇源碼安裝,就是可能坑有點(diǎn)多(被坑過一次的經(jīng)歷),我這里就直接下載'編譯好的二進(jìn)制文件',因?yàn)楹唵温?/p>
wget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz? ? ?//下載
xz -d node-v10.15.3-linux-x64.tar.xz? ? ? ? ? ? //解壓xz格式
tar -xf node-v10.15.3-linux-x64.tar? ? ? ? //最終解壓
進(jìn)入里面的bin目錄就可以看到已經(jīng)編譯好的node和npm了,直接使用就好.
分別給他們設(shè)置個(gè)軟連方便全局使用node和npm命令
ln -s /opt/soft/node-v10.15.3-linux-x64/bin/node /usr/local/bin/
ln -s /opt/soft/node-v10.15.3-linux-x64/bin/npm /usr/local/bin/
開始安裝head
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install? ? //知道node的應(yīng)該明白這一步其實(shí)就是在下載安裝相關(guān)的依賴擴(kuò)展
如果在安裝圖中的擴(kuò)展的時(shí)候報(bào)錯(cuò)了,就直接忽略他,執(zhí)行下面命令
npm install phantomjs-prebuilt@2.1.16 --ignore-scripts? ? ? ? ?//執(zhí)行這個(gè)命令前,先把node_modules/目錄下已經(jīng)有的擴(kuò)展全部刪除了
到這里先不要忙去執(zhí)行 'npm run start' 運(yùn)行,先修改一下配置文件吧
sudo vi Gruntfile.js
上面配置文件中可以修改head插件監(jiān)聽的端口.默認(rèn)是9100,我改成9101
sudo vi _site/app.js
上面配置文件中可以修改head訪問es的端口,這里改的端口需要和你es的一致
最開始我在配置es的時(shí)候,配置了兩個(gè)允許跨域的選項(xiàng)就是為了這里head能夠訪問es
npm run start? //啟動(dòng)
啟動(dòng)之前保證es是啟動(dòng)的狀態(tài), 如果不想占用終端,就在es啟動(dòng)命令中添加一個(gè) '-d'參數(shù), 然后瀏覽器輸入http://localhost:9101訪問就可以,如果是云服務(wù)器,就用對(duì)應(yīng)的ip地址替換localhost
ps: 在這個(gè)插件中我們就能界面化es的操作,還是比較方便的,但是也正因?yàn)榉奖?而且這個(gè)擁有各種刪除什么的權(quán)限,只能在開發(fā)階段的時(shí)候用,生產(chǎn)環(huán)境一定要關(guān)閉他
elasticsearch集群搭建
集群中包含三臺(tái)服務(wù)器,內(nèi)網(wǎng)ip分別是
172.27.0.17(master)----主服務(wù)器纸颜,這也是上面步驟安裝的服務(wù)器
172.27.0.11(slave1)-----從服務(wù)器1
172.27.0.6 (slave2)-----從服務(wù)器2
按照前面的步驟分配在兩臺(tái)從服務(wù)器中安裝ES兽泣,注意下圖中是和主節(jié)點(diǎn)配置不一樣的地方
cluster.name: 集群名字必須一致
node.name: 從服務(wù)器節(jié)點(diǎn)名字(兩個(gè)從節(jié)點(diǎn)分別為slave1個(gè)slave2)
node.master: 是否為主節(jié)點(diǎn)
discovery.zen.ping.unicast.hosts: 節(jié)點(diǎn)向指定的主機(jī)發(fā)送單播請求,可以理解成尋找他的主節(jié)點(diǎn)胁孙,數(shù)組的形式證明可以多個(gè)唠倦,這里只有一個(gè)
三臺(tái)es服務(wù)器以及head插件都分別配置好并且啟動(dòng)后称鳞,直接訪問head所在服務(wù)器以及監(jiān)聽的端口,就能看到es集群了
IK分詞插件的安裝
詳細(xì)地址: https://github.com/medcl/elasticsearch-analysis-ik稠鼻,上面有具體的安裝步驟
版本選擇
上圖是版本的選擇冈止,我這里安裝的es版本是6.6.2,多以直接選擇ik的master版本
安裝
他提供了兩種安裝方式候齿,第一種是去?https://github.com/medcl/elasticsearch-analysis-ik/releases這個(gè)地址下載對(duì)應(yīng)的版本熙暴,然后在你自己的es目錄下的擴(kuò)展插件目錄下,解壓出來就可以毛肋,第二種方式是直接用es安裝插件的運(yùn)行命令怨咪,下面分別試一試
ps: 兩種安裝方式都記得切換到為es服務(wù)創(chuàng)建的賬號(hào)下進(jìn)行操作,比如我這里切換到?elasticsearch 這個(gè)賬號(hào)
1. 下載的方式安裝
進(jìn)入es的plugins目錄润匙,創(chuàng)建ik目錄诗眨,下載ik分詞插件,解壓
wge?https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.2/elasticsearch-analysis-ik-6.6.2.zip
停止掉es服務(wù)重新啟動(dòng)孕讳,在啟動(dòng)的日志中匠楚,就可以看到是否加載了ik插件
2.? 命令的方式安裝
這種安裝方式需要需要es版本大于等于5.5.1,剛剛的安裝方式我是在集群的master節(jié)點(diǎn)安裝的厂财,接下來我切換到slave1節(jié)點(diǎn)安裝
查看es運(yùn)行狀態(tài)芋簿,如果運(yùn)行中,直接停止
切換到es服務(wù)賬號(hào)璃饱,在es的bin目錄下執(zhí)行安裝命令
./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.2/elasticsearch-analysis-ik-6.6.2.zip
測試分詞器的分詞計(jì)劃
1. 默認(rèn)的standard
2. 剛剛安裝的ik分詞器
可以看到,默認(rèn)的standard是把每個(gè)字都單獨(dú)分開了,而ik_smart是只能的分解成了一些詞語,顯然后者比較適用