elasticsearch安裝與配置介紹

基本概念

集群:一個或者多個elasticsearch節點組成的集合

索引:含有相同屬性的文檔集合,例如一個索引代表消費者數據,一個索引代表產品數據(相當于MySQL的database)

類型:索引可以定義一個或多個類型,通常定義有相同字段的文檔作為一個類型,文檔必須屬于一個類型(相當于MySQL的table)

文檔:文檔是可以被索引的基本數據單位,例如一個用戶的基本信息,一片文章的數據,他是整個es里最小的存儲單位(相當于MySQL的每一行具體的記錄)

單節點安裝

elasticsearch是基于java開發的,所以安裝之前需要先安裝版本大于等于1.8的jdk

jdk安裝:?下載---解壓---配置環境變量

下載地址:?https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,自己去這個地址下載,因為他會帶一個認證參數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?

配置環境變量

sudo vi ~/.bash_profile

source ~/.bash_profile

elasticsearch安裝:?下載---解壓---配置---啟動

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默認安裝后設置的內存是1GB,我這里只是自己的一個乞丐版本的服務器,內存比較小,我就只給他分配256M(根據自己情況使用配置,如果內存不夠的話,啟動過程中會提示已殺死這類提示)

vi config/jvm.options

ps: 更多具體配置可以在elasticsearch官網查看

啟動: elasticsearch可以接收用戶輸入的腳本并且執行,處于安全考慮,他不能root賬戶來啟動,不然會報下圖錯誤

所以我需要為elasticsearch新建一個系統運行賬號

groupadd?elasticsearch? ? ?//新建一個elasticsearch的用戶組

useradd -g?elasticsearch?elasticsearch? //在elasticsearch用戶組下面建立一個elasticsearch的用戶

將elasticsearch目錄的所有者給剛剛建立的賬號

chown -R elasticsearch:elasticsearch elasticsearch-6.6.2/

然后切換到剛剛的賬號啟動elasticsearch

su elasticsearch

./elasticsearch-6.6.2/bin/elasticsearch

啟動過程中可能會出現下面這類的錯誤提示

錯誤1:?elasticsearch這個用戶的最大打開線程數(3894)太低,至少增加到4096

解決:

1. 查看用戶最大打開線程數

ulimit -a

2. 切換到root用戶,編輯文件

vi /etc/security/limits.conf

在文件末尾加上下面配置

* 表示匹配所有用戶, nproc 表示配置最大打開線程數

3. 退出從新登錄后,再次查看,修改成功

錯誤2:?最大虛擬內存區域vm.max_map_count(65530)太低,至少增加到262144

解決:

在root賬號下修改配置文件

vi /etc/sysctl.conf

在末尾添加配置,值大于等于實體的262144就可以

添加完成后執行下面命令

sysctl -p

然后可以查看到成功修改成你設置的數字

上面問題解決后,切換成elasticsearch賬號,繼續啟動es,看到下圖的樣子證明就啟動成功了

驗證

瀏覽器輸入ip地址,加上自己在配置文件中配置的端口,比如我這里的9201訪問

我前面配置的host是0.0.0.0,所以可以用外網訪問,不需要外網訪問的話,就配置127.0.0.1或者對應的內網ip就行

安裝head插件

安裝好ES后,你就可以通過官網提供的相關命令開進行索引的創建,但是更多人還是習慣用界面直接操作.這個時候就可以用elasticsearch-head這個插件了.elasticsearch-head 是用于監控 ES 狀態的客戶端插件,包括數據可視化、執行增刪改查操作等(我就簡單暴露的把它理解成了像Navicat這類的工具).

git地址:?https://github.com/mobz/elasticsearch-head

安裝前準備

在上面地址說明中可以看到,安裝他需要npm包管理工具,所以先在系統下安裝一下node.js吧

nodejs下載地址:?https://nodejs.org/en/download/

長期維護的版本可能不包含最新版本最新特性,但是比較穩定,所以這里就用穩定的版本吧.可以選擇源碼安裝,就是可能坑有點多(被坑過一次的經歷),我這里就直接下載'編譯好的二進制文件',因為簡單嘛

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? ? ? ? //最終解壓

進入里面的bin目錄就可以看到已經編譯好的node和npm了,直接使用就好.

分別給他們設置個軟連方便全局使用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的應該明白這一步其實就是在下載安裝相關的依賴擴展

如果在安裝圖中的擴展的時候報錯了,就直接忽略他,執行下面命令

npm install phantomjs-prebuilt@2.1.16 --ignore-scripts? ? ? ? ?//執行這個命令前,先把node_modules/目錄下已經有的擴展全部刪除了

到這里先不要忙去執行 'npm run start' 運行,先修改一下配置文件吧

sudo vi Gruntfile.js

上面配置文件中可以修改head插件監聽的端口.默認是9100,我改成9101

sudo vi _site/app.js

上面配置文件中可以修改head訪問es的端口,這里改的端口需要和你es的一致

最開始我在配置es的時候,配置了兩個允許跨域的選項就是為了這里head能夠訪問es

npm run start? //啟動

啟動之前保證es是啟動的狀態, 如果不想占用終端,就在es啟動命令中添加一個 '-d'參數, 然后瀏覽器輸入http://localhost:9101訪問就可以,如果是云服務器,就用對應的ip地址替換localhost

ps: 在這個插件中我們就能界面化es的操作,還是比較方便的,但是也正因為方便,而且這個擁有各種刪除什么的權限,只能在開發階段的時候用,生產環境一定要關閉他

elasticsearch集群搭建

集群中包含三臺服務器,內網ip分別是

172.27.0.17(master)----主服務器,這也是上面步驟安裝的服務器

172.27.0.11(slave1)-----從服務器1

172.27.0.6 (slave2)-----從服務器2

按照前面的步驟分配在兩臺從服務器中安裝ES,注意下圖中是和主節點配置不一樣的地方

cluster.name: 集群名字必須一致

node.name: 從服務器節點名字(兩個從節點分別為slave1個slave2)

node.master: 是否為主節點

discovery.zen.ping.unicast.hosts: 節點向指定的主機發送單播請求,可以理解成尋找他的主節點,數組的形式證明可以多個,這里只有一個

三臺es服務器以及head插件都分別配置好并且啟動后,直接訪問head所在服務器以及監聽的端口,就能看到es集群了

IK分詞插件的安裝

詳細地址: https://github.com/medcl/elasticsearch-analysis-ik,上面有具體的安裝步驟

版本選擇

上圖是版本的選擇,我這里安裝的es版本是6.6.2,多以直接選擇ik的master版本

安裝

他提供了兩種安裝方式,第一種是去?https://github.com/medcl/elasticsearch-analysis-ik/releases這個地址下載對應的版本,然后在你自己的es目錄下的擴展插件目錄下,解壓出來就可以,第二種方式是直接用es安裝插件的運行命令,下面分別試一試

ps: 兩種安裝方式都記得切換到為es服務創建的賬號下進行操作,比如我這里切換到?elasticsearch 這個賬號

1. 下載的方式安裝

進入es的plugins目錄,創建ik目錄,下載ik分詞插件,解壓

wge?https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.2/elasticsearch-analysis-ik-6.6.2.zip

停止掉es服務重新啟動,在啟動的日志中,就可以看到是否加載了ik插件

2.? 命令的方式安裝

這種安裝方式需要需要es版本大于等于5.5.1,剛剛的安裝方式我是在集群的master節點安裝的,接下來我切換到slave1節點安裝

查看es運行狀態,如果運行中,直接停止

切換到es服務賬號,在es的bin目錄下執行安裝命令

./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.2/elasticsearch-analysis-ik-6.6.2.zip

測試分詞器的分詞計劃

1. 默認的standard

2. 剛剛安裝的ik分詞器

可以看到,默認的standard是把每個字都單獨分開了,而ik_smart是只能的分解成了一些詞語,顯然后者比較適用

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。