elastic search監控

自定義副本分片和索引
1、注意事項

索引一旦建立完成,分片數就不可以修改了
但是副本數可以隨時修改

2、創建索引的時候就自定義副本和分片

PUT /yayayaay/
{
  "settings": {
    "number_of_shards": 3, 
    "number_of_replicas": 0
  }
}

3、修改單個索引的副本數

PUT /oldzhang/_settings/
{
  "settings": {
    "number_of_replicas": 0
  }
}

4、修改所有的索引的副本數

PUT /_all/_settings/
{
  "settings": {
    "number_of_replicas": 0
  }
}

5、工作生成如何設置

2個節點: 默認就可以 
3個節點: 重要的數據,2副本 不重要的默認 
日誌收集: 1副本3分片 

ES監控
1、監控注意

0.不能只監控集羣狀態
1.監控節點數
2.監控集羣狀態
3.兩者任意一個發生改變了都報警

2、監控命令

GET _cat/nodes
GET _cat/health

命令行監控:
查看集羣健康狀態

curl -s 127.0.0.1:9200/_cat/health |grep "green"|wc -l

查看節點個數

curl   -s 127.0.0.1:9200/_cat/nodes|wc -l

集羣健康狀態不爲green 或者 節點個數不爲3
滿足兩個其中的一個條件 就報警

使用zabbix監控和kibana結合使用

使用kibana的monitoring進行監控

在這裏插入圖片描述
測試:
在這裏插入圖片描述

在這裏插入圖片描述

elastic search 的優化

官方參考
在這裏插入圖片描述
總結:
1、禁用交換分區
關閉swap分區
配置問文件打開內存鎖定參數
2、虛擬內存的設置

1.內存 
    不要超過32G  超過32G的話  性能不升反降(官方建議)
1、系統建議預留一半
2、每個ES節點不要超過32G內存
官方的意思:如果性能不夠了 就加節點 加機器

48內存 
系統留一半: 24G 
自己留一半: 24G
8G 12G 16G 24G 30G 

2.SSD硬盤
0	10 或者不做raid都可以  因爲有副本在保證

3.代碼優化

4.升級大版本

中文分詞器
1、安裝條件

所有的ES節點都需要安裝
所有的ES都需要重啓才能生效

2、安裝中文分詞器
在線安裝

cd /usr/share/elasticsearch
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.0/elasticsearch-analysis-ik-6.6.0.zip

離線本地安裝
鏈接:https://pan.baidu.com/s/1D_bA7Qhl4LY-yEljOL2W7w
提取碼:dfjf

/usr/share/elasticsearch/bin/elasticsearch-plugin install file:///XXX/elasticsearch-analysis-ik-6.6.0.zip

2、創建索引

PUT /news2

3、創建模板

POST /news2/text/_mapping
{
        "properties": {
            "content": {
                "type": "text",
                "analyzer": "ik_max_word",
                "search_analyzer": "ik_smart"
            }
        }

}

4、插入測試數據

POST /news2/text/1
{"content":"美國留給伊拉克的是個爛攤子嗎"}

POST /news2/text/2
{"content":"公安部:各地校車將享最高路權"}

POST /news2/text/3
{"content":"中韓漁警衝突調查:韓警平均每天扣1艘中國漁船"}

POST /news2/text/4
{"content":"中國駐洛杉磯領事館遭亞裔男子槍擊 嫌犯已自首"}

5、再次查詢數據發現已經能識別中文了

POST /news2/_search
{
    "query" : { "match" : { "content" : "中國" }},
    "highlight" : {
        "pre_tags" : ["<tag1>", "<tag2>"],
        "post_tags" : ["</tag1>", "</tag2>"],
        "fields" : {
            "content" : {}
        }
    }
}

6、再插入測試語句 查詢

POST /news/txt/1
{"content":"美國留給伊拉克的是個爛攤子嗎"}

POST /news/txt/2
{"content":"公安部:各地校車將享最高路權"}

POST /news/txt/3
{"content":"中韓漁警衝突調查:韓警平均每天扣1艘中國漁船"}

POST /news/txt/4
{"content":"中國駐洛杉磯領事館遭亞裔男子槍擊 嫌犯已自首"}


POST /news/_search
{
    "query" : { "match" : { "content" : "中國" }},
    "highlight" : {
        "pre_tags" : ["<tag1>", "<tag2>"],
        "post_tags" : ["</tag1>", "</tag2>"],
        "fields" : {
            "content" : {}
        }
    }
}

在這裏插入圖片描述

熱更新中文分詞庫
1、安裝nginx

cat >> /etc/yum.repos.d/nginx.repo<<EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/\$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF

yum makecache fast
yum install nginx -y

2、編寫字典文件

cat >>/usr/share/nginx/html/my_dic.txt<<EOF
上海
班長
學委
張亞
胖虎
EOF

3、重啓nginx

nginx -t
systemctl restart nginx 

4、配置es的中文分詞器插件

vim /etc/elasticsearch/analysis-ik/IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
	<comment>IK Analyzer 擴展配置</comment>
	<!--用戶可以在這裏配置自己的擴展字典 -->
	<entry key="ext_dict"></entry>
	 <!--用戶可以在這裏配置自己的擴展停止詞字典-->
	<entry key="ext_stopwords"></entry>
	<!--用戶可以在這裏配置遠程擴展字典 -->
	<entry key="remote_ext_dict">http://10.0.0.51/my_dic.txt</entry>
	<!--用戶可以在這裏配置遠程擴展停止詞字典-->
	<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

5、將修改好的LK配置文件複製到其他所有ES節點

cd /etc/elasticsearch/analysis-ik/
scp IKAnalyzer.cfg.xml 10.0.0.52:/etc/elasticsearch/analysis-ik/

6、重啓所有ES節點

systemctl restart elasticsearch.service 

7、查看日誌裏字典的詞有沒有加載出來

[2020-02-12T14:56:38,610][INFO ][o.w.a.d.Monitor          ] [node-1] 重新加載詞典...
[2020-02-12T14:56:38,611][INFO ][o.w.a.d.Monitor          ] [node-1] try load config from /etc/elasticsearch/analysis-ik/IKAnalyzer.cfg.xml
[2020-02-12T14:56:38,614][INFO ][o.w.a.d.Monitor          ] [node-1] [Dict Loading] http://10.0.0.51/my_dic.txt
[2020-02-12T14:56:38,628][INFO ][o.w.a.d.Monitor          ] [node-1] 上海
[2020-02-12T14:56:38,629][INFO ][o.w.a.d.Monitor          ] [node-1] 班長
[2020-02-12T14:56:38,629][INFO ][o.w.a.d.Monitor          ] [node-1] 學委
[2020-02-12T14:56:38,629][INFO ][o.w.a.d.Monitor          ] [node-1] 張亞
[2020-02-12T14:56:38,629][INFO ][o.w.a.d.Monitor          ] [node-1] 胖虎
[2020-02-12T14:56:38,629][INFO ][o.w.a.d.Monitor          ] [node-1] 重新加載詞典完畢...

8、打開ES日誌,然後更新字典內容,查看日誌中會不會自動加載

echo "武漢" >> /usr/share/nginx/html/my_dic.txt

9、搜索測試驗證結果

POST /news2/text/7
{"content":"武漢加油!"}


POST /news2/_search
{
    "query" : { "match" : { "content" : "武漢" }},
    "highlight" : {
        "pre_tags" : ["<tag1>", "<tag2>"],
        "post_tags" : ["</tag1>", "</tag2>"],
        "fields" : {
            "content" : {}
        }
    }
}

10、電商上架新產品流程

先把新上架的商品的關鍵詞更新到詞典裏
查看ES日誌,確認新詞被動態更新了
自己編寫一個測試索引,插入測試數據,然後查看搜索結果
確認沒有問題之後,在讓開發插入新商品的數據
測試

備份與恢復

1、官方解決方案:做快照
2、第三方解決方案

鏈接:https://pan.baidu.com/s/1j9XDmZKMyr7xWMYCPV0Z2Q
提取碼:vjzb
複製這段內容後打開百度網盤手機App,操作更方便哦

1、前提條件
需要node環境

npm -v
node -v

2、nodejs安裝

https://nodejs.org/dist/v10.16.3/node-v10.16.3-linux-x64.tar.xz
tar xf  node-v10.16.3-linux-x64.tar.xz -C /opt/node
echo "export PATH=/opt/node/bin:\$PATH" >> /etc/profile
source /etc/profile
npm -v
node -v

3、指定使用國內淘寶npm源

npm install -g cnpm --registry=https://registry.npm.taobao.org

4、安裝es-dump

cnpm install elasticdump -g

5、備份
備份成可讀點的json格式

elasticdump \
  --input=http://10.0.0.51:9200/news2 \
  --output=/data/news2.json \
  --type=data

備份成壓縮格式

elasticdump \
  --input=http://10.0.0.51:9200/news2 \
  --output=$|gzip > /data/news2.json.gz  

備份分詞器/mapping/數據一條龍服務

elasticdump \
  --input=http://10.0.0.51:9200/news2 \
  --output=/data/news2_analyzer.json \
  --type=analyzer
elasticdump \
  --input=http://10.0.0.51:9200/news2 \
  --output=/data/news2_mapping.json \
  --type=mapping
elasticdump \
  --input=http://10.0.0.51:9200/news2 \
  --output=/data/news2.json \
  --type=data

恢復
只恢復數據

elasticdump \
  --input=/data/news2.json \
  --output=http://10.0.0.51:9200/news2

恢復所有數據包含分詞器/mapping一條龍

elasticdump \
  --input=/data/news2_analyzer.json \
  --output=http://10.0.0.51:9200/news2 \
  --type=analyzer
elasticdump \
  --input=/data/news2_mapping.json \
  --output=http://10.0.0.51:9200/news2 \
  --type=mapping
elasticdump \
  --input=/data/news2.json \
  --output=http://10.0.0.51:9200/news2
  --type=data

批量處理備份

[root@localhost data]#  curl -s 10.0.0.52:9200/_cat/indices|awk '{print $3}' |grep -v "^\."
oldzhang
news3
news4
website
news
news2

注意事項:

1、如果恢復的時候 數據衝突了,會被覆蓋掉
2、如果已經存在備份文件裏面沒有的數據,會保留下來

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章