1. 程式人生 > 實用技巧 >在Linux中安裝ElasticSearch&Kibana&ik分詞器

在Linux中安裝ElasticSearch&Kibana&ik分詞器

ElasticSearch&Kibana&ik分詞器安裝及安裝時遇到的問題

概述:

  • ElasticSearch是一個基於Lucene的搜尋伺服器
  • 是一個分散式、高擴充套件、高實時的搜尋與資料分析引擎
  • 基於RESTful web介面
  • Elasticsearch是用Java語言開發的,並作為Apache許可條款下的開放原始碼釋出,是一種流行的企業級搜尋引擎

官網:https://www.elastic.co/

ElasticSearch安裝

#1,上傳ElasticSearch安裝包
put e:/software/elasticsearch-7.4.0-linux-x86_64.tar.gz
#2,解壓壓縮包 解壓到/usr/local/elasticsearch 目錄下 -C大寫
 tar -zxvf elasticsearch-7.4.0-linux-x86_64.tar.gz -C /usr/local/elasticsearch
#3,建立普通使用者 ElasticSearch不允許root使用者直接執行
useradd username  # 新增使用者
passwd  password   # 為使用者設定密碼
#4,為新使用者授權
chown -R username:username /usr/local/elasticsearch/elasticsearch-7.4.0 

修改內容:

  cluster.name:配置elasticsearch的叢集名稱,預設是elasticsearch。建議修改成一個有意義的名稱

  node.name:節點名,elasticsearch會預設隨機指定一個名字,建議指定一個有意義的名稱,方便管理

  network.host:設定為0.0.0.0允許外網訪問

  http.port:Elasticsearch的http訪問埠

  cluster.initial_master_nodes:初始化新的叢集時需要此配置來選舉master

#5,修改 elasticsearch.yml檔案
vim /usr/local/elasticsearch/elasticsearch-7.4.0/config/elasticsearch.yml 
#新增內容 cluster.name: my-application node.name: node-1 network.host: 0.0.0.0 http.port: 9200 cluster.initial_master_nodes: ["node-1"]

修改配置檔案

# 切換到root使用者
su root 

#1. ===最大可建立檔案數太小=======
vim /etc/security/limits.conf 
# 在檔案末尾中增加下面內容
username soft nofile 65536
username hard nofile 65536
# =====
vim /etc/security/limits.d/20-nproc.conf
# 在檔案末尾中增加下面內容
username soft nofile 65536
username hard nofile 65536
*  hard    nproc     4096
# 注:* 代表Linux所有使用者名稱稱    

#2. ===最大虛擬記憶體太小=======
vim /etc/sysctl.conf
# 在檔案中增加下面內容
vm.max_map_count=655360
# 重新載入,輸入下面命令:
sysctl -p

啟動ElasticSearch

su username  # 切換到username使用者啟動
cd /usr/local/elasticsearch/elasticsearch-7.4.0/bin
./elasticsearch #啟動

此時執行會出現問題:

  因為ElasticSearch內建了對應版本的jdk,而我們使用的Linux是已經配置了jdk(我的是jdk8),此時會因為版本不一致而出現問題,我們只需要修改ElasticSearch不使用Linux配置的jdk而使用內建的jdk即可

#修改ElasticSearch的執行檔案內容
vim /usr/local/elasticsearch/elasticsearch-7.4.0/bin/elasticsearch

#在檔案中新增以下內容
#(此處配置為elastic解壓後jdk的路徑)
export JAVA_HOME=/usr/local/elasticsearch/elasticsearch-7.4.0/jdk     
export PATH=$JAVA_HOME/bin:$PATH

#新增的jdk判斷
if [ -x "$JAVA_HOME/bin/java" ]; then
    JAVA="/usr/local/elasticsearch/elasticsearch-7.4.0/jdk/bin/java"
else
    JAVA=`which java`
fi

完整的檔案內容

#!/bin/bash

# CONTROLLING STARTUP:
#
# This script relies on a few environment variables to determine startup
# behavior, those variables are:
#
#   ES_PATH_CONF -- Path to config directory
#   ES_JAVA_OPTS -- External Java Opts on top of the defaults set
#
# Optionally, exact memory values can be set using the `ES_JAVA_OPTS`. Note that
# the Xms and Xmx lines in the JVM options file must be commented out. Example
# values are "512m", and "10g".
#
#   ES_JAVA_OPTS="-Xms8g -Xmx8g" ./bin/elasticsearch

#(此處配置為elastic解壓後jdk的路徑)
export JAVA_HOME=/usr/local/elasticsearch/elasticsearch-7.4.0/jdk     
export PATH=$JAVA_HOME/bin:$PATH

source "`dirname "$0"`"/elasticsearch-env

if [ -z "$ES_TMPDIR" ]; then
  ES_TMPDIR=`"$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.TempDirectory`
fi

ES_JVM_OPTIONS="$ES_PATH_CONF"/jvm.options
JVM_OPTIONS=`"$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.JvmOptionsParser "$ES_JVM_OPTIONS"`
ES_JAVA_OPTS="${JVM_OPTIONS//\$\{ES_TMPDIR\}/$ES_TMPDIR}"


#新增的jdk判斷
if [ -x "$JAVA_HOME/bin/java" ]; then
    JAVA="/usr/local/elasticsearch/elasticsearch-7.4.0/jdk/bin/java"
else
    JAVA=`which java`
fi





# manual parsing to find out, if process should be detached
if ! echo $* | grep -E '(^-d |-d$| -d |--daemonize$|--daemonize )' > /dev/null; then
  exec \
    "$JAVA" \
    $ES_JAVA_OPTS \
    -Des.path.home="$ES_HOME" \
    -Des.path.conf="$ES_PATH_CONF" \
    -Des.distribution.flavor="$ES_DISTRIBUTION_FLAVOR" \
    -Des.distribution.type="$ES_DISTRIBUTION_TYPE" \
    -Des.bundled_jdk="$ES_BUNDLED_JDK" \
    -cp "$ES_CLASSPATH" \
    org.elasticsearch.bootstrap.Elasticsearch \
    "$@"
else
  exec \
    "$JAVA" \
    $ES_JAVA_OPTS \
    -Des.path.home="$ES_HOME" \
    -Des.path.conf="$ES_PATH_CONF" \
    -Des.distribution.flavor="$ES_DISTRIBUTION_FLAVOR" \
    -Des.distribution.type="$ES_DISTRIBUTION_TYPE" \
    -Des.bundled_jdk="$ES_BUNDLED_JDK" \
    -cp "$ES_CLASSPATH" \
    org.elasticsearch.bootstrap.Elasticsearch \
    "$@" \
    <&- &
  retval=$?
  pid=$!
  [ $retval -eq 0 ] || exit $retval
  if [ ! -z "$ES_STARTUP_SLEEP_TIME" ]; then
    sleep $ES_STARTUP_SLEEP_TIME
  fi
  if ! ps -p $pid > /dev/null ; then
    exit 1
  fi
  exit 0
fi

exit $?

啟動ES後有個警告資訊:OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release. 這是提醒你 cms 垃圾收集器在 jdk9 就開始被標註為 @deprecated

此時修改 config目錄下的jvm.options檔案內容即可

將 : -XX:+UseConcMarkSweepGC
改為:-XX:+UseG1GC

完成以上操作後,啟動ElasticSearch就沒問題了,可以訪問ElasticSearch

訪問ElasticSearch之前,確保防火牆是關閉的

#暫時關閉防火牆
systemctl  stop  firewalld

# 或者

#永久設定防火牆狀態
systemctl enable firewalld.service  #開啟防火牆永久性生效,重啟後不會復原 
systemctl disable firewalld.service #關閉防火牆,永久性生效,重啟後不會復原 

瀏覽器輸入http://192.168.149.135:9200/,(Linux的ip:9200)如下圖

此時已經啟動成功

  重點幾個關注下即可:
  number" : "7.4.0" 表示elasticsearch版本
  lucene_version" : "8.2.0" 表示lucene版本
  name : 預設啟動的時候指定了 ES 例項名稱
  cluster_name : 預設名為 elasticsearch

Kibana安裝

Kibana是一個針對Elasticsearch的開源分析及視覺化平臺,用來搜尋、檢視互動儲存在Elasticsearch索引中的資料。使用Kibana,可以通過各種圖表進行高階資料分析及展示。

Kibana讓海量資料更容易理解。它操作簡單,基於瀏覽器的使用者介面可以快速建立儀表板(dashboard)實時顯示Elasticsearch查詢動態。

安裝:

#1,下載對應的安裝包並上傳到Linux
https://www.elastic.co/cn/downloads/kibana
#2,解壓
tar -xzf kibana-7.4.0-linux-x86_64.tar.gz -C /usr/local/kibana

修改配置 : 

  server.port:http訪問埠

  server.host:ip地址,0.0.0.0表示可遠端訪問

  server.name:kibana服務名

  elasticsearch.hosts:elasticsearch地址

  elasticsearch.requestTimeout:請求elasticsearch超時時間,預設為30000,此處可根據情況設定

#3,修改配置
vim /usr/local/kibana/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

啟動Kibana:

  由於kibana不建議使用root使用者啟動,如果用root啟動,需要加--allow-root引數

# 切換到kibana的bin目錄
cd /usr/local/kibana/kibana-7.4.0-linux-x86_64/bin
# 啟動
./kibana --allow-root

訪問Kibana

  瀏覽器輸入http://192.168.149.135:5601/,(Linux的ip:5601)如下圖:

看到這個介面,說明Kibanan已成功安裝。

Discover:視覺化查詢分析器 Visualize:統計分析圖表 Dashboard:自定義主面板(新增圖表) Timelion:Timelion是一個kibana時間序列展示元件(暫時不用) Dev Tools:Console控制檯(同CURL/POSTER,操作ES程式碼工具,程式碼提示,很方便) Management:管理索引庫(index)、已儲存的搜尋和視覺化結果(save objects)、設定 kibana 伺服器屬性。

安裝IK分詞器:

環境準備:

下載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  

解壓maven安裝包

tar xzf apache-maven-3.1.1-bin.tar.gz 

配置path

vim  /etc/profile.d/maven.sh
#將下面的內容複製到檔案,儲存
export MAVEN_HOME=/opt/maven  #maven安裝路徑
export PATH=${MAVEN_HOME}/bin:${PATH} 

設定好Maven的路徑之後,需要執行下面的命令使其生效

source /etc/profile.d/maven.sh

驗證是否安裝成功

mvn -v

安裝IK分詞器

下載IK:

wget https://github.com/medcl/elasticsearch-analysis-ik/archive/v7.4.0.zip

解壓IK由於這裡是zip包不是gz包,所以我們需要使用unzip命令進行解壓,如果本機環境沒有安裝unzip,請執行:

#安裝unzip
yum install zip 
yum install unzip
#解壓IK
unzip v7.4.0.zip

編譯jar包

# 切換到 elasticsearch-analysis-ik-7.4.0目錄
cd elasticsearch-analysis-ik-7.4.0/
#打包
mvn package

jar包移動

package執行完畢後會在當前目錄下生成target/releases目錄,將其中的elasticsearch-analysis-ik-7.4.0.zip。拷貝到elasticsearch目錄下的新建的目錄plugins/analysis-ik,並解壓

#切換目錄
cd /usr/local/elasticsearch/elasticsearch-7.4.0/plugins
#新建目錄
mkdir analysis-ik
cd analysis-ik
#執行拷貝
cp -R /usr/local/elasticsearch/elasticsearch-analysis-ik-7.4.0/target/releases/elasticsearch-analysis-ik-7.4.0.zip      /usr/local/elasticsearch/elasticsearch-7.4.0/plugins/analysis-ik
#執行解壓
unzip  /usr/local/elasticsearch/elasticsearch-7.4.0/plugins/analysis-ik/elasticsearch-analysis-ik-7.4.0.zip

拷貝辭典

將elasticsearch-analysis-ik-7.4.0目錄下的config目錄中的所有檔案 拷貝到elasticsearch的config目錄

cp -R /usr/local/elasticsearch/elasticsearch-analysis-ik-7.4.0/config/*   /opt/elasticsearch-7.4.0/config

完成以上配置後IK分詞器安裝並配置完成,配置完成後需要重啟ElasticSearch

文中涉及的路徑按自己的情況而定!