1. 程式人生 > >ElasticSearch從不懂到會用1—安裝篇

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請求中文查詢亂碼問題

  分頁查詢的時候,如果頁數特別大,查詢效率會很低的問題