1 ElasticSearch 安裝
1.1 ElasticSearch安裝
alt+p # 打開sftp窗口
# 上傳es安裝包
put e:/software/elasticsearch-7.4.0-linux-x86_64.tar.gz
2、執行解壓操作 ,如下圖
# 將elasticsearch-7.4.0-linux-x86_64.tar.gz解壓到opt文件夾下. -C 大寫
tar -zxvf elasticsearch-7.4.0-linux-x86_64.tar.gz -C /opt
3、創建普通用戶
因為安全問題,Elasticsearch 不允許root用戶直接運行,所以要創建新用戶,在root用戶中創建新用戶,執行如下命令:
useradd itheima # 新增itheima用戶
passwd itheima # 為itheima用戶設置密碼
5、為新用戶授權,如下圖
chown -R itheima:itheima /opt/elasticsearch-7.4.0 #文件夾所有者
將 /opt/elasticsearch-7.4.0文件夾授權給itheima用戶,由上圖可見,我們的文件夾權限賦給了itheima
6、修改elasticsearch.yml文件
vim /opt/elasticsearch-7.4.0/config/elasticsearch.yml
# ======================== Elasticsearch Configuration =========================
cluster.name: my-application
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
cluster.name:配置elasticsearch的集群名稱,默認是elasticsearch。建議修改成一個有意義的名稱
node.name:節點名,elasticsearch會默認隨機指定一個名字,建議指定一個有意義的名稱,方便管理
network.host:設置為0.0.0.0允許外網訪問
http.port:Elasticsearch的http訪問端口
cluster.initial_master_nodes:初始化新的集群時需要此配置來選舉master
7、修改配置文件
新創建的itheima用戶最大可創建文件數太小,最大虛擬內存太小,切換到root用戶,編輯下列配置文件, 添加類似如下內容
# 切換到root用戶
su root
#1. ===最大可創建文件數太小=======
vim /etc/security/limits.conf
# 在文件末尾中增加下面內容
itheima soft nofile 65536
itheima hard nofile 65536
# =====
vim /etc/security/limits.d/20-nproc.conf
# 在文件末尾中增加下面內容
itheima soft nofile 65536
itheima hard nofile 65536
* hard nproc 4096
# 注:* 代表Linux所有用戶名稱
#2. ===最大虛擬內存太小=======
vim /etc/sysctl.conf
# 在文件中增加下面內容
vm.max_map_count=655360
# 重新加載,輸入下面命令:
sysctl -p
8、啟動elasticsearch
#switch user
su itheima # 切換到itheima用戶啟動
cd /opt/elasticsearch-7.4.0/bin
./elasticsearch #啟動
通過上圖我們可以看到elasticsearch已經成功啟動
1.2 訪問elasticsearch
1、在訪問elasticsearch前,請確保防火牆是關閉的,執行命令:
#暫時關閉防火牆
systemctl stop firewalld
# 或者
#永久設置防火牆狀態
systemctl enable firewalld.service #打開防火牆永久性生效,重啟后不會復原
systemctl disable firewalld.service #關閉防火牆,永久性生效,重啟后不會復原
瀏覽器輸入http://192.168.52.128:9200/,如下圖
此時elasticsearch已成功啟動:
重點幾個關注下即可:
number" : "7.4.0" 表示elasticsearch版本
lucene_version" : "8.2.0" 表示lucene版本
name : 默認啟動的時候指定了 ES 實例名稱
cluster_name : 默認名為 elasticsearch
2 Elasticsearch輔助插件安裝
2.1 Postman安裝
1、什么是Postman
Postman是一個http模擬請求的工具。
官網介紹:“Modern software is built on APIs,Postman helps you develop APIs faster”
看得出來,它是一個專門測試 API 的工具,Postman 提供功能強大的 Web API 和 HTTP 請求的調試,它能夠發送任何類型的HTTP 請求 (GET, POST, PUT, DELETE…),並且能附帶任何數量的參數和 Headers。不僅如此,它還提供測試數據和環境配置數據的導入導出。
進入官網www.getpostman.com,下載
2.2 Kibana安裝
1、什么是Kibana
Kibana是一個針對Elasticsearch的開源分析及可視化平台,用來搜索、查看交互存儲在Elasticsearch索引中的數據。使用Kibana,可以通過各種圖表進行高級數據分析及展示。
Kibana讓海量數據更容易理解。它操作簡單,基於瀏覽器的用戶界面可以快速創建儀表板(dashboard)實時顯示Elasticsearch查詢動態。
2、上傳kibana
CRT中克隆一個窗口,上傳Kibana
put E:\software\kibana-7.4.0-linux-x86_64.tar.gz
2、解壓kibana
tar -xzf kibana-7.4.0-linux-x86_64.tar.gz -C /opt
解壓到當前目錄(/opt)下
3、修改kibana配置
vim /opt/kibana-7.4.0-linux-x86_64/config/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
server.name: "kibana-itcast"
elasticsearch.hosts: ["http://127.0.0.1:9200"]
elasticsearch.requestTimeout: 99999
server.port:http訪問端口
server.host:ip地址,0.0.0.0表示可遠程訪問
server.name:kibana服務名
elasticsearch.hosts:elasticsearch地址
elasticsearch.requestTimeout:請求elasticsearch超時時間,默認為30000,此處可根據情況設置
4、啟動kibana
由於kibana不建議使用root用戶啟動,如果用root啟動,需要加--allow-root參數
# 切換到kibana的bin目錄
cd /opt/kibana-7.4.0-linux-x86_64/bin
# 啟動
./kibana --allow-root
啟動成功。
5、訪問kibana
1.瀏覽器輸入http://192.168.52.128:5601/,如下圖:
http://192.168.52.128:5601/
看到這個界面,說明Kibanan已成功安裝。
Discover
:可視化查詢分析器 Visualize
:統計分析圖表 Dashboard
:自定義主面板(添加圖表) Timelion
:Timelion是一個kibana時間序列展示組件(暫時不用) Dev Tools
:Console控制台(同CURL/POSTER,操作ES代碼工具,代碼提示,很方便) Management
:管理索引庫(index)、已保存的搜索和可視化結果(save objects)、設置 kibana 服務器屬性。
2.3 head安裝
Tips: 課后擴展內容
head簡介
ead插件是ES的一個可視化管理插件,用來監視ES的狀態,並通過head客戶端和ES服務進行交互,比如創建映射、創建索引等。
在登陸和訪問head插件地址和ElasticSearch前需要事先在服務器上安裝和配置好ElasticSearch以及head插件。安裝完后,默認head插件的web端口為9100,ElasticSearch服務的端口為9200,使用瀏覽器訪問head地址,如
2.3.1 Node安裝
1) 什么是Node
簡單的說 Node.js 就是運行在服務端的 JavaScript。Node.js 是一個基於
2) 下載Node
上一節我們已經安裝好了Elasticsearch,接下來我們來安裝head插件,由於elasticsearch-head插件是由nodejs語言編寫,所以安裝elasticsearch-head前需要先安裝nodejs。 首先,執行以下命令安裝nodejs和grunt
打開虛擬機,執行wget命令下載Node,如下圖:
wget https://nodejs.org/dist/v10.15.2/node-v10.15.2-linux-x64.tar.xz
3)解壓Node包
tar xvf node-v10.15.2-linux-x64.tar.xz
4)設置軟連接
解壓文件的 bin 目錄底下包含了 node、npm 等命令,我們可以使用 ln 命令來設置軟連接:
ln -s bin/npm /usr/local/bin/
ln -s bin/node /usr/local/bin/
在/etc/profile中配置好path環境變量
vi ~/.bash_profile
export NODE_HOME=/opt/nodejs/node-v10.15.2-linux-x64
export PATH=$PATH:$NODE_HOME/bin
保存退出,使文件生效
source ~/.bash_profile
查看node安裝版本,執行 node -v 驗證安裝如下圖:
2.3.2 grunt安裝
安裝grunt(運行在Node.js上面的任務管理器(task runner)),為了獲得Grunt的更多產品特性,需要全局安裝Grunt's 命令行接口(CLI),使用npm進行安裝,如下:
npm install -g grunt-cli
查看grunt版本
輸出grunt版本信息,表示安裝成功。
2.3.3 head安裝
1) 執行命令安裝git
git yum install git -y
2) 切換到/opt目錄下,執行下面的克隆命令
git clone git://github.com/mobz/elasticsearch-head.git
3) 進入到elasticsearch-head目錄
cd elasticsearch-head
4) 運行
在運行之前我們需要修改下elasticsearch.yml,因為ES默認不開啟跨域訪問,需要添加以下配置:
#開啟cors跨域訪問支持,默認為false
http.cors.enabled: true
#跨域訪問允許的域名地址,(允許所有域名)以上使用正則
http.cors.allow-origin: "*"
然后開始執行運行命令:
npm run start
5) 訪問head
瀏覽器輸入ip:port:9100,如下圖
看到這個界面說明我們的head插件成功安裝並且成功連接Elasticsearch。
Elasticsearch 要使用 ik,就要先構建 ik 的 jar包,這里要用到 maven 包管理工具,而 maven 需要java 環境,而 Elasticsearch 內置了jdk, 所以可以將JAVA_HOME設置為Elasticsearch 內置的jdk
1)設置JAVA_HOME
vim /etc/profile
# 在profile文件末尾添加
#java environment
export JAVA_HOME=/opt/elasticsearch-7.4.0/jdk
export PATH=$PATH:${JAVA_HOME}/bin
# 保存退出后,重新加載profile
source /etc/profile
2)下載maven安裝包
wget http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gz
3)解壓maven安裝包
tar xzf apache-maven-3.1.1-bin.tar.gz
4)設置軟連接
ln -s apache-maven-3.1.1 maven
5)設置path
打開文件
vim /etc/profile.d/maven.sh
將下面的內容復制到文件,保存
export MAVEN_HOME=/opt/maven
export PATH=${MAVEN_HOME}/bin:${PATH}
設置好Maven的路徑之后,需要運行下面的命令使其生效
source /etc/profile.d/maven.sh
6)驗證maven是否安裝成功
mvn -v
2、安裝IK分詞器
1)下載IK
wget https://github.com/medcl/elasticsearch-analysis-ik/archive/v7.4.0.zip
執行如下圖:
2)解壓IK
由於這里是zip包不是gz包,所以我們需要使用unzip命令進行解壓,如果本機環境沒有安裝unzip,請執行:
yum install zip
yum install unzip
解壓IK
unzip v7.4.0.zip
3)編譯jar包
# 切換到 elasticsearch-analysis-ik-7.4.0目錄
cd elasticsearch-analysis-ik-7.4.0/
#打包
mvn package
4) jar包移動
package執行完畢后會在當前目錄下生成target/releases目錄,將其中的elasticsearch-analysis-ik-7.4.0.zip。拷貝到elasticsearch目錄下的新建的目錄plugins/analysis-ik,並解壓
#切換目錄
cd /opt/elasticsearch-7.4.0/plugins/
#新建目錄
mkdir analysis-ik
cd analysis-ik
#執行拷貝
cp -R /opt/elasticsearch-analysis-ik-7.4.0/target/releases/elasticsearch-analysis-ik-7.4.0.zip /opt/elasticsearch-7.4.0/plugins/analysis-ik
#執行解壓
unzip /opt/elasticsearch-7.4.0/plugins/analysis-ik/elasticsearch-analysis-ik-7.4.0.zip
5)拷貝辭典
將elasticsearch-analysis-ik-7.4.0目錄下的config目錄中的所有文件 拷貝到elasticsearch的config目錄
cp -R /opt/elasticsearch-analysis-ik-7.4.0/config/* /opt/elasticsearch-7.4.0/config
記得一定要重啟Elasticsearch!!!
3、使用IK分詞器
IK分詞器有兩種分詞模式:ik_max_word和ik_smart模式。
1、ik_max_word
會將文本做最細粒度的拆分,比如會將“乒乓球明年總冠軍”拆分為“乒乓球、乒乓、球、明年、總冠軍、冠軍。
#方式一ik_max_word
GET /_analyze
{
"analyzer": "ik_max_word",
"text": "乒乓球明年總冠軍"
}
ik_max_word分詞器執行如下:
{
"tokens" : [
{
"token" : "乒乓球",
"start_offset" : 0,
"end_offset" : 3,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "乒乓",
"start_offset" : 0,
"end_offset" : 2,
"type" : "CN_WORD",
"position" : 1
},
{
"token" : "球",
"start_offset" : 2,
"end_offset" : 3,
"type" : "CN_CHAR",
"position" : 2
},
{
"token" : "明年",
"start_offset" : 3,
"end_offset" : 5,
"type" : "CN_WORD",
"position" : 3
},
{
"token" : "總冠軍",
"start_offset" : 5,
"end_offset" : 8,
"type" : "CN_WORD",
"position" : 4
},
{
"token" : "冠軍",
"start_offset" : 6,
"end_offset" : 8,
"type" : "CN_WORD",
"position" : 5
}
]
}
2、ik_smart 會做最粗粒度的拆分,比如會將“乒乓球明年總冠軍”拆分為乒乓球、明年、總冠軍。
#方式二ik_smart
GET /_analyze
{
"analyzer": "ik_smart",
"text": "乒乓球明年總冠軍"
}
ik_smart分詞器執行如下:
{
"tokens" : [
{
"token" : "乒乓球",
"start_offset" : 0,
"end_offset" : 3,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "明年",
"start_offset" : 3,
"end_offset" : 5,
"type" : "CN_WORD",
"position" : 1
},
{
"token" : "總冠軍",
"start_offset" : 5,
"end_offset" : 8,
"type" : "CN_WORD",
"position" : 2
}
]
}
由此可見 使用ik_smart可以將文本"text": "乒乓球明年總冠軍"分成了【乒乓球】【明年】【總冠軍】
這樣看的話,這樣的分詞效果達到了我們的要求。