ElasticSearch從不懂到會用1—安裝篇
連續加班近一個多月,專案終於告一段落了,也騰出時間寫一寫專案中用到的東西。在這個專案中,我負責的主要是多種業務場景下的資料查詢和搜尋,其中搜索用到了ElasticSearch搜尋引擎。下面主要圍繞ElasticSearch的安裝、專案中的使用方式以及踩過的一些坑進行總結。(本部落格主要針對ElasticSearch的使用,對一些原理不做過多解釋)
1.ElasticSearch是什麼
ElasticSearch是一個基於Lucene的搜尋伺服器。它提供了一個分散式多使用者能力的全文搜尋引擎,基於RESTful web介面。說的通俗一點,就是是一個比較好、用起來也比較方便的搜尋伺服器。一般專案中如果用到關鍵字搜尋,就可以將資料存入到ElasticSearch,搜尋效率比較高。(下面ElasticSearch簡稱ES)
在關係型資料庫中,一般有資料庫、表、行、和列的概念。在ES中有:
索引index(類似於資料庫)
型別type(類似於表的概念,在ES7之後,就沒有了type)、
document(類似於一行記錄)
feild欄位,每個document的內容都是一些欄位及對應的值。(欄位相當於資料庫的列)
對於存入ES的資料,ES會進行分詞(欄位是否分詞,採用什麼分詞器分詞在新增對映的時候——也就是建立type結構的時候指定)。
2.ElasticSearch安裝
首先說明:
在安裝ES的時候,首先強調一點,ES啟動的時候不能使用root使用者啟動,如果拿root使用者啟動失敗了,則刪除logs目錄,在重新切換到普通使用者啟動即可。下面會強調這個問題。
此外,ES是Java開發的時候,所以安裝ES之前,需要先安裝JDK。
(1)下載安裝包
在官網下載ES的安裝包:https://www.elastic.co/downloads/elasticsearch
將安裝包放在linux下的一個目錄下進行解壓,我選擇的是opt目錄:
tar -zxvf elasticsearch-7.0.0-linux-x86_64.tar.gz cd elasticsearch-7.0.0 cd config
(2)編輯config目錄下的elasticsearch.yml
修改以下幾個選項:
cluster.name: study-es
node.name: node01
network.host: 192.168.1.8
http.port: 9200
discovery.zen.ping.timeout:120s #設定叢集中自動發現其他節點時ping連線的超時時間
discovery.zen.ping.multicast.enabled:false #設定是否開啟多播發現節點
discovery.zen.ping.unicast.hosts:["192.168.1.8:9200","192.168.1.9:9200","192.168.1.10:9200"]
(3)將配置分發到其他節點.
scp -r elasticsearch-7.0.0/ [email protected]:`pwd`
scp -r elasticsearch-7.0.0/ [email protected]:`pwd`
分發之後,去對應的節點修改個別配置
(4)普通使用者啟動es
如果是root使用者對ES進行的安裝和配置,那麼切換到普通使用者啟動ES一般沒有許可權,所以需要將ES相關的檔案給普通使用者授權。
- ll命令檢視ES,結果如下:
它和它下面的資料夾和目錄都屬於root使用者和root使用者組。
- 在root登入的情況下改變es資料夾和它下面的檔案的屬主和屬組,以便普通使用者有執行許可權
我的linux上有test使用者,test使用者也屬於test使用者組。
chown -R test:test elasticsearch-7.0.0/
ll命令檢視:
su test //切換到test使用者
cd bin ./elasticsearch
在瀏覽器檢視,輸入地址192.168.1.8:9200
3.中文分詞外掛的安裝
下載分詞zip包,如果下載原始碼包還需要自己安裝,下載地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
(1)進入elasticsearch安裝目錄下的plugins目錄,建立ik目錄
cd elasticsearch-7.0.0/plugins/ mkdir ik
(2)解壓分詞包,並拷貝到ik目錄下
unzip elasticsearch-analysis-ik-7.0.0.zip #解壓出來的目錄叫elasticsearch cd elasticsearch #進入剛剛解壓出來的elasticsearch目錄 cp -r ./* /opt/elasticsearch-7.0.0/plugins/ik/ #拷貝當前目錄所有子目錄和檔案到elasticsearch的ik目錄下
(3)重新啟動ES
分詞器安裝可參考連結:https://www.jianshu.com/p/1c4d489f18fe
ES安裝先說到這。後面會對 ElasticSearch的使用(包括restful api 、Java API、ElasticSearch-Sql)以及踩過的一些坑進行總結。這些坑包括下面幾個問題,暫時只想起來這麼多:
搜尋時的大小寫問題
wildcard模糊查詢:*和?
sql語句的and or 等的優先順序問題
post請求中文查詢亂碼問題
分頁查詢的時候,如果頁數特別大,查詢效率會很低的問題