天天看點

Linux安裝ElasticSearch及基礎配置

作者:程式設計經驗分享

今天看了一下自己的部落格網站,發現内容越來越多,搜尋内容時無法全文檢索,體驗極差。

對于這個問題我最先想到的就是【ElasticSearch】資料庫簡稱ES,全文檢索這一塊ES是目前做的最好的一個了。其次想到的就是MySQL自帶的【n-gram模型】,這個模型也可以做全文檢索,但這會導緻資料庫壓力過大,隻适合少量使用者的場景,而且不支援多表全文檢索,缺點實在太多,最終還是選擇了ES來做全文檢索。

n-gram模型

在講解ES之前我們還是簡單的介紹一下MySQL自帶的n-gram模型的使用。

首先我們需要在表上面建立全文檢索索引:

# 以修改表的形式建立全文索引
ALTER TABLE 表名 ADD FULLTEXT INDEX 索引名稱(字段名,字段名...) WITH PARSER ngram;

# 建立索引
CREATE FULLTEXT INDEX 索引名稱 ON 表名(索引字段,字段名...) WITH PARSER ngram;           

通過全文檢索查詢資料

SELECT * FROM 表名 WHERE MATCH(字段名,字段名...) AGAINST('待查詢的關鍵字');           

全文檢索還有一個全局配置項【ngram_token_size】,這個主要影響中文及英文的内容,如果全文檢索主要内容為中文建議使用預設的【ngram_token_size=2】即可。如果是英文,可以在MySQL配置檔案中改為1,【ngram_token_size=2】時英文内容搜尋将無效。

MySQL全文檢索基礎使用就這麼多了。

ElasticSearch資料庫

這裡以ElasticSearch最新版【8.8.1】為例,給大家講講最新版的安裝、相關配置及基礎使用。注意我們安裝的是 ES8.8.1 版本,這個版本自帶一個JVM環境,ES從7開始就自動了一個JVM環境,ES7之前的版本需要我們自己安裝JVM環境

1 下載下傳安裝

我們可以直接進入官網下載下傳源碼,官網已經提供了yum及rpm安裝教材,這個教材還是比較詳細的,大家可以參照一下。我這裡以源碼的形式進行安裝:

1.1 在/usr/local/目錄下建立ElasticSearch的安裝目錄

mkdir elastic           

1.2 進入ElasticSearch安裝目錄并下載下傳源碼

# 進入安裝目錄
cd elastic
# 下載下傳源碼
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.8.1-linux-x86_64.tar.gz           

1.3 下載下傳解壓縮源碼

tar -zxvf elasticsearch-8.8.1-linux-x86_64.tar.gz           

1.4 進入項目根目錄

解壓縮後生成 elasticsearch-8.8.1 目錄,這裡面的就是elasticsearch源碼了。

cd elasticsearch-8.8.1/           

2 ElasticSearch基礎配置

elastic的主要配置檔案在根目錄的【config】目錄下,總共有以下三個配置檔案:

  • elasticsearch.yml:主要是es相關配置
  • jvm.options:jvm相關配置
  • log4j2.properties:日志相關配置

3 啟動ElasticSearch

最新版本的ES不允許我們直接使用root使用者運作,是以在啟動ES之前我們還需要建立一個ES使用的系統使用者

# 建立使用者組
groupadd esgroup

# 建立使用者并指定其使用者組
useradd -g esgroup es

# 設定es密碼
passwd es 回車設定密碼           

給新使用者賦予ES目錄的權限:

sudo chown -R es:esgroup /usr/local/elastic/           

注意:後續操作中如果出現【es is not in the sudoers file. This incident will be reported】或者【Kibana should not be run as root. Use --allow-root to continue】及【Exception in thread "main" java.nio.file.AccessDeniedException】都是因為 ES8 不允許使用 root 使用者允許啟動

kibana運作時啟動需要指定參數才能以root使用者運作:bin/kibana --allow-root

除此之外,最新版本的ElasticSearch預設情況下啟用了使用者密碼驗證,作為初學者可以關閉驗證。而且最新版啟動後界面上沒有顯示監聽的端口,我們可以自己在elasticsearch.yml檔案中指定。

3.1 關閉使用者密碼驗證及指定監聽端口

修改【config/elasticsearch.yml】檔案中的【xpack.security.enabled】配置項為false即可

# 監聽端口
http.port: 9200

# 關閉使用者密碼驗證
xpack.security.enabled: false           

3.2 啟動ElasticSearch

上面說過elasticsearch 8 之後不允許以 root 使用者啟動,是以我們需要切換到之前建立的【es】使用者下,如果已經切換到【es】使用者可以忽略:

su es           

現在我們可以啟動elasticsearch了:

./bin/elasticsearch           

如果需要以守護程序的方式啟動,隻需要加上 -d

如果啟動後如果有【Unable to locate appender "rolling_old" for logger config "root"】錯誤資訊,主要原因是我們沒有修改 【config/elasticsearch.yml】檔案中的日志目錄,預設的日志目錄不存在或者說目前啟動ES 的使用者沒有權限。我們隻要修改【path.logs】選項為【/usr/local/elastic/elasticsearch-8.8.1/logs】即可

啟動後,我們就可以通過IP+端口的形式通路ElasticSearch了:

http://127.0.0.1:9200/           

上面的連接配接打開後如下圖所示,表示啟動成功:

Linux安裝ElasticSearch及基礎配置

4 安裝管理背景Kibana

ElasticSearch提供了類似phpMyAdmin一樣的網頁版本的管理背景。安裝管理背景比較簡單,回到【/usr/local/elastic】目錄下,下載下傳源碼并解壓縮,之後進入源碼目錄啟動管理背景即可。具體步驟如下:

4.1 下載下傳管理背景代碼

wget https://artifacts.elastic.co/downloads/kibana/kibana-8.8.1-linux-x86_64.tar.gz           

4.2 解壓縮并進入源碼目錄

# 解壓縮
tar -zxvf kibana-8.8.1-linux-x86_64.tar.gz

# 進入解壓縮後的源碼目錄
cd kibana-8.8.1/           

4.3 kibana配置目錄

kibana配置檔案都在源碼跟目錄下的【config】檔案夾下面,其中【kibana.yml】就是主要配置檔案。如果啟動後無法通過外網通路,可能是允許通路IP段的問題或者是防火牆未開放kibana監聽的端口,學些階段大家可以關閉防火牆。

# kibana監聽的端口
server.port: 5601

# 允許通路的IP段,我這裡測試使用,允許所有IP段通路,正式環境可以改成指定IP
server.host: "0.0.0.0"           

4.4 啟動kibana

bin/kibana           
如果在root使用者下,可以使用【bin/kibana --allow-root】指令啟動,--allow-root參數允許使用root使用者運作

啟動成功之後我們就可以通過IP+端口的方式通路ElasticSearch管理背景,預設端口是5601,完整連結如下:

http://localhost:5601           

有遺漏或者不對的可以在我的公衆号留言哦

繼續閱讀