1: 集群相關名詞
1.集群健康狀態(tài)
綠色: 所有數(shù)據都完整,并且副本數(shù)滿足
黃色: 所有數(shù)據都完整,但是有的索引副本數(shù)不滿足
紅色: 有的數(shù)據不完整
2.節(jié)點類型
主節(jié)點: 負責調度數(shù)據分配到哪個節(jié)點
數(shù)據節(jié)點: 負責處理落到自己身上的數(shù)據
默認: 主節(jié)點同時也是數(shù)據節(jié)點
3.數(shù)據分片
主分片: 實際存儲的數(shù)據,負責讀寫,粗框的是主分片
副本分片: 主分片的副本,提供讀,同步主分片,細框的是副本分片
4.副本:
主分片的備份,副本數(shù)量可以自定義
2: 部署ES集群
1.安裝java
rpm -ivh jdk-8u102-linux-x64.rpm
2.安裝ES
rpm -ivh elasticsearch-6.6.0.rpm
3.配置ES配置文件
配置內存鎖定:
systemctl edit elasticsearch.service
[Service]
LimitMEMLOCK=infinity
集群配置文件:
b01配置文件:
[root@db-01 ~]# cat /etc/elasticsearch/elasticsearch.yml
cluster.name: linux
node.name: node-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 10.0.0.114,127.0.0.1
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.0.0.114","10.0.0.115"]
discovery.zen.minimum_master_nodes: 1
http.cors.enabled: true
http.cors.allow-origin: "*"
==================================================================
db02配置文件:
[root@db-02 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
cluster.name: linux
node.name: node-2
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 10.0.0.115,127.0.0.1
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.0.0.114","10.0.0.115"]
discovery.zen.minimum_master_nodes: 1
http.cors.enabled: true
http.cors.allow-origin: "*"
4.啟動
systemctl daemon-reload
systemctl restart elasticsearch
5.查看日志
tail -f /var/log/elasticsearch/linux.log
3: ES集群相關注意
注意事項:
1.插入和讀取數(shù)據在任意節(jié)點都可以執(zhí)行,效果一樣
2.es-head可以連接集群內任一臺服務
3.主節(jié)點負責讀寫
如果主分片所在的節(jié)點壞掉了,副本分片會升為主分片
4.主節(jié)點負責調度
如果主節(jié)點壞掉了,數(shù)據節(jié)點會自動升為主節(jié)點
第九章: 查看集群各種信息
GET _cat/nodes
GET _cat/health
GET _cat/master
GET _cat/fielddata
GET _cat/indices
GET _cat/shards
GET _cat/shards/oldzhang
3: 集群注意事項
注意1:發(fā)現(xiàn)節(jié)點參數(shù)不需要把集群內所有的機器IP都加上
只需要包含集群內任意一個IP和自己的IP就可以
discovery.zen.ping.unicast.hosts: ["10.0.0.51","10.0.0.53"]
注意2: 集群選舉相關的參數(shù)需要設置為集群節(jié)點數(shù)的大多數(shù)
discovery.zen.minimum_master_nodes: 2
注意3: 默認創(chuàng)建索引為1副本5分片
注意4: 數(shù)據分配的時候會出現(xiàn)2中顏色
紫色: 正在遷移
黃色: 正在復制
綠色: 正常
注意5: 3節(jié)點的時候
0副本一臺都不能壞
1副本的極限情況下可以壞2臺: 1臺1臺的壞,不能同時壞2臺
2副本的情況可以同時壞2臺
第十一章: 自定義副本分片和索引
索引為2副本3分片
索引為0副本5分片
注意:
索引一旦建立完成,分片數(shù)就不可以修改了
但是副本數(shù)可以隨時修改
命令:
1.創(chuàng)建索引的時候就自定義副本和分片
PUT /yayayaay/
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 0
}
}
2.修改單個索引的副本數(shù)
PUT /oldzhang/_settings/
{
"settings": {
"number_of_replicas": 0
}
}
3.修改所有的索引的副本數(shù)
PUT /_all/_settings/
{
"settings": {
"number_of_replicas": 0
}
}
工作如何設置:
2個節(jié)點: 默認就可以
3個節(jié)點: 重要的數(shù)據,2副本 不重要的默認
日志收集: 1副本3分片
4: 監(jiān)控
3節(jié)點實驗宕機一臺機器谁撼,集群狀態(tài)仍然為綠色
監(jiān)控注意,不能只監(jiān)控集群狀態(tài)
1.監(jiān)控節(jié)點數(shù)
2.監(jiān)控集群狀態(tài)
3.2者任意一個發(fā)生改變了都報警
監(jiān)控命令:
GET _cat/nodes
GET _cat/health
5.增強插件x-pack監(jiān)控功能![
6.安全功能
7.x版本以上有自帶功能冈止,或者使用search-guard插件
7.優(yōu)化
1.內存
不要超過32G (官方說明)
48內存
系統(tǒng)留一半: 24G
自己留一半: 24G
8G 12G 16G 24G 30G 慢慢擴大容量,生產建議
8.es的備份和恢復
前提條件:
必須要有Node環(huán)境和npm軟件
nodejs
npm
1.nodejs環(huán)境安裝
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
vim /etc/profile
export PATH=/opt/node/bin:$PATH
source /etc/profile
[root@db-01 ~]# node -v
v10.16.3
[root@db-01 ~]# npm -v
6.9.0
2.指定使用國內淘寶npm源
npm install -g cnpm --registry=https://registry.npm.taobao.org
3.安裝es-dump
cnpm install elasticdump -g
4.備份命令
elasticdump \
--input=http://10.0.0.114:9200/oldzhang \
--output=/data/oldzhang.json \
--type=data
elasticdump \
--input=http://10.0.0.114:9200/oldzhang \
--output=$|gzip > /data/oldzhang.json.gz
5.恢復命令
elasticdump \
--input=/data/oldzhang.json \
--output=http://10.0.0.114:9200/oldzhang
6.注意
恢復的時候需要先解壓縮成json格式
恢復的時候,如果已經存在相同的數(shù)據,會被覆蓋掉
如果新增加的數(shù)據,則不影響,繼續(xù)保留
9.集群發(fā)現(xiàn)相關參數(shù)
discovery.zen.fd.ping_timeout: 120s
discovery.zen.fd.ping_retries: 6
discovery.zen.fd.ping_interval: 30s
超時時間為120s
重試次數(shù)為6次
每次間隔30秒
10.中文分詞
es是國外開發(fā),不支持中文詞語組合搜索
1.插入測試數(shù)據
POST /news/txt/1
{"content":"美國留給伊拉克的是個爛攤子嗎"}
POST /news/txt/2
{"content":"公安部:各地校車將享最高路權"}
POST /news/txt/3
{"content":"中韓漁警沖突調查:韓警平均每天扣1艘中國漁船"}
POST /news/txt/4
{"content":"中國駐洛杉磯領事館遭亞裔男子槍擊 嫌犯已自首"}
2.檢測
POST /news/_search
{
"query" : { "match" : { "content" : "中國" }},
"highlight" : {
"pre_tags" : ["<tag1>", "<tag2>"],
"post_tags" : ["</tag1>", "</tag2>"],
"fields" : {
"content" : {}
}
}
}
分詞配置
0.前提條件
- 所有的ES節(jié)點都需要安裝
- 所有的ES都需要重啟才能生效
1.配置中文分詞器
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
本地文件安裝
/usr/share/elasticsearch/bin/elasticsearch-plugin install file:///XXX/elasticsearch-analysis-ik-6.6.0.zip
systemctl restart elasticsearch
2.創(chuàng)建索引
PUT /news2
3.創(chuàng)建模板
POST /news2/text/_mapping
{
"properties": {
"content": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
}
}
}
4.插入測試數(shù)據
POST /news2/text/1
{"content":"美國留給伊拉克的是個爛攤子嗎"}
POST /news2/text/2
{"content":"公安部:各地校車將享最高路權"}
POST /news2/text/3
{"content":"中韓漁警沖突調查:韓警平均每天扣1艘中國漁船"}
POST /news2/text/4
{"content":"中國駐洛杉磯領事館遭亞裔男子槍擊 嫌犯已自首"}
自定義字典
字典里面沒有
cd /etc/elasticsearch/analysis-ik/
mkdir custom
cd custom
[root@mongo-01 custom]# cat mydict.dic
魏旭
chown -R elasticsearch:elasticsearch custom
[root@mongo-01 analysis-ik]# vim IKAnalyzer.cfg.xml
systemctl restart elasticsearch
要重新創(chuàng)建何暮,因為原來的已經用原來的字典分配好了樊零,不會加載新的詞典進去分配