精彩回顧
mongo
1. sql和nosql區(qū)別
2. 應(yīng)用常見
- 用戶評論
- 游戲裝備
- 問卷調(diào)查
- 日志
3. mongo特點(diǎn)
4. 安裝部署
5. 配置文件
6. CURD增刪改查
7. 用戶授權(quán)
- agmin root 角色
- 自定義 read write 角色
8. 副本集
- 創(chuàng)建目錄
- 修改配置
- 啟動所有節(jié)點(diǎn)
- 初始化副本集配置參數(shù)
- 測試主從復(fù)制是否正常
- 模擬故障轉(zhuǎn)移
- 擴(kuò)容和收縮
- 權(quán)重調(diào)整和主庫降級
- 仲裁節(jié)點(diǎn)
9. 備份恢復(fù)
- 全備
- oplog備份
- mysql導(dǎo)出csv含潘,導(dǎo)入到mongo
10. 模擬誤刪除操作
- 全備
- 模擬誤刪除
- 備份oplog
- 切換到local下,查找誤刪除語句的時(shí)間點(diǎn)
- 處理備份文件
- 恢復(fù)到誤操作時(shí)間點(diǎn)以前
- 檢驗(yàn)數(shù)據(jù)是否恢復(fù)成功
《Elasticsearch》
1. 什么是搜索
- 百度
- 淘寶、京東
2. 如果用數(shù)據(jù)庫做搜索會怎么樣
- 天氣
- 關(guān)鍵詞
- 全表掃描(掃描) 例:老男孩教育 ---> 老%%教育 、 老教育%
3. 什么是全文檢索藻烤,倒排索引和Lucene
- 根據(jù)匹配的優(yōu)先級順序推送搜索的數(shù)據(jù)信息
4. 什么是Elasticsearch
- 分布式搜索分析引擎,它被用作全文檢索、結(jié)構(gòu)化搜索窄绒、分析以及這三個(gè)功能的組合
- Java 開發(fā)語言
- 底層是 Lucene 引擎
5. Elasticsearch 功能
(1)分布式的搜索引擎和數(shù)據(jù)分析引擎
搜索:站內(nèi)搜索,商城商品的檢索
數(shù)據(jù)分析:電商網(wǎng)站崔兴,最近7天牙膏這種商品銷量排名前10的商家有哪些彰导;新聞網(wǎng)站:最近1個(gè)月訪問量排名前3的新聞板塊
(2)全文檢索,結(jié)構(gòu)化檢索敲茄,數(shù)據(jù)分析
全文檢索:
(3)對海量數(shù)據(jù)進(jìn)行實(shí)時(shí)的處理
6. Elasticsearch應(yīng)用場景
- 網(wǎng)頁搜索
- 新聞搜索
- 商品標(biāo)簽
- 日志收集分析展示
高亮位谋、推薦搜索
Stack Overflow(國外的程序員常討論論壇),IT問題堰燎,程序的報(bào)錯(cuò)掏父,提交上去,有人會給你討論和回答秆剪,全文檢索赊淑,搜索相關(guān)問題和答案,程序報(bào)錯(cuò)了鸟款,就會將報(bào)錯(cuò)信息粘貼到里面去膏燃,搜索有沒有對應(yīng)的答案
GitHub(開源代碼管理)茂卦,搜索上千億行代碼
7. Elasticsearch特點(diǎn)
- 適合搜索
- 全文檢索
- 分析數(shù)據(jù)
- 處理海量數(shù)據(jù)PB
- 高可用性能分布式搜索引擎數(shù)據(jù)庫
8. Elasticsearch數(shù)據(jù)格式
9. 安裝部署
9.1 下載安裝軟件
# mkdir -p /data/es_soft/
# cd /data/es_soft/
# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.rpm
yum install elasticsearch-6.6.0.rpm -y
# rpm -ivh elasticsearch-6.6.0.rpm
9.2 配置啟動
[root@db01 /data/soft]# systemctl daemon-reload
[root@db01 /data/soft]# systemctl enable elasticsearch.service
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.
[root@db01 /data/soft]# systemctl start elasticsearch.service
[root@db01 /data/soft]# systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2019-07-09 10:07:45 CST; 6s ago
Docs: http://www.elastic.co
Main PID: 2172 (java)
CGroup: /system.slice/elasticsearch.service
├─2172 /bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSIn...
└─2227 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux...
Jul 09 10:07:45 db01 systemd[1]: Started Elasticsearch.
Jul 09 10:07:45 db01 systemd[1]: Starting Elasticsearch...
Jul 09 10:07:45 db01 elasticsearch[2172]: OpenJDK 64-Bit Server VM warning...N
Hint: Some lines were ellipsized, use -l to show in full.
[root@db01 /data/soft]# systemctl is-active elasticsearch.service
active
9.3 檢查是否啟動成功
ps -ef|grep elastic
[root@db01 /data/soft]# lsof -i:9200
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 2172 elasticsearch 190u IPv6 32647 0t0 TCP localhost:wap-wsp (LISTEN)
java 2172 elasticsearch 191u IPv6 32648 0t0 TCP localhost:wap-wsp (LISTEN)
[root@db01 /data/soft]# curl localhost:9200
{
"name" : "Hb7dC06",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "G-HeEmHjTw6i--lH_qPJhA",
"version" : {
"number" : "6.6.0",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "a9861f4",
"build_date" : "2019-01-24T11:27:09.439740Z",
"build_snapshot" : false,
"lucene_version" : "7.6.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
9.4 查看配置文件位置
[root@db01 /data/soft]# rpm -qc elasticsearch
/etc/elasticsearch/elasticsearch.yml # 主配置文件
/etc/elasticsearch/jvm.options # java虛擬機(jī)配置
/etc/init.d/elasticsearch # init.d啟動腳本
/etc/sysconfig/elasticsearch # 環(huán)境變量相關(guān)信息何什,不需要?jiǎng)?/usr/lib/sysctl.d/elasticsearch.conf # 環(huán)境變量相關(guān)
/usr/lib/systemd/system/elasticsearch.service # systemd啟動腳本
9.5 調(diào)整配置
[root@db01 ~]# vim /etc/elasticsearch/jvm.options
-Xms1g
-Xmx1g
1.不要超過30G
官網(wǎng) https://www.elastic.co/cn/
9.6 調(diào)整elasticsearch 配置
> 配置文件調(diào)整后參數(shù)信息
[root@db01 ~]# grep "^[a-z]" /etc/elasticsearch/elasticsearch.yml
node.name: node-1
path.data: /data/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 10.0.0.51
http.port: 9200
> 創(chuàng)建目錄并授權(quán)
mkdir /data/elasticsearch/ -p
chown -R elasticsearch:elasticsearch /data/elasticsearch/
> 重新啟動
systemctl stop elasticsearch
systemctl start elasticsearch
> 連接報(bào)錯(cuò)
[root@db01 ~]# curl 10.0.0.51:9200
curl: (7) Failed connect to 10.0.0.51:9200; Connection refused
> 查看日志報(bào)錯(cuò)信息:(內(nèi)存鎖定)
[root@db01 ~]# tail -f /var//log/elasticsearch/elasticsearch.log
[2019-07-09T11:26:31,187][ERROR][o.e.b.Bootstrap ] [node-1] node validation exception
[1] bootstrap checks failed
[1]: memory locking requested for elasticsearch process but memory is not locked
> 解決辦法:(參考 https://www.elastic.co/guide/en/elasticsearch/reference/6.6/setting-system-settings.html#systemd)
systemctl edit elasticsearch
[Service]
LimitMEMLOCK=infinity
systemctl daemon-reload
systemctl stop elasticsearch
systemctl start elasticsearch
> 重新檢查:OK
[root@db01 ~]# curl 10.0.0.51:9200
{
"name" : "node-1",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "jH94pzHNTSqbFdOYFSDvgw",
"version" : {
"number" : "6.6.0",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "a9861f4",
"build_date" : "2019-01-24T11:27:09.439740Z",
"build_snapshot" : false,
"lucene_version" : "7.6.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
============= 啟動報(bào)錯(cuò)總結(jié):=============
1.配置文件沒有任何修改
2.配置文件沒有修改IP地址
3.系統(tǒng)內(nèi)存只有1個(gè)G,啟動失敗
4.配置文件參數(shù)拼寫錯(cuò)誤等龙,啟動失敗
5.忘記修改內(nèi)存鎖定处渣,啟動失敗
9.7 es-head安裝部署
[root@db01 ~]# yum install nodejs npm openssl screen -y
[root@db01 ~]# node -v
v6.17.1
[root@db01 ~]# npm -v
3.10.10
# npm install -g cnpm --registry=https://registry.npm.taobao.org
[root@db01 ~]# tar zxvf elasticsearch-head.tar.gz -C /opt/
cd /opt/elasticsearch-head
npm run start &
修改es配置文件
vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
重啟es
systemctl stop elasticsearch
systemctl start elasticsearch
網(wǎng)頁打開
10.0.0.51:9100
輸入
http://10.0.0.51:9200
![Q51M@S$7)LPPK8[([
QCN.png
副本 補(bǔ)齊
分片 補(bǔ)齊
《Kibana 安裝》
1. 配置啟動文件
[root@db01 ~]# grep "^[a-Z]" /etc/kibana/kibana.yml
server.port: 5601
server.host: "10.0.0.51"
server.name: "db01"
elasticsearch.hosts: ["http://localhost:9200"]
2.啟動
[root@db01 ~]# systemctl start kibana
檢查端口
[root@db01 ~]# netstat -lnp|grep 5601
tcp 0 0 10.0.0.51:5601 0.0.0.0:* LISTEN 2362/node
3. 連接
《中文分詞器安裝》
1.版本要對應(yīng)
2.所有的ES節(jié)點(diǎn)都需要安裝
3.所有es節(jié)點(diǎn)都需要重啟
安裝(有幾個(gè)els節(jié)點(diǎn)安裝幾個(gè))
[root@db01 ~]# cd /usr/share/elasticsearch/bin
[root@db01 /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
-> Downloading https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.0/elasticsearch-analysis-ik-6.6.0.zip
[=================================================] 100%
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: plugin requires additional permissions @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.net.SocketPermission * connect,resolve
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.
Continue with installation? [y/N]y #按 y 確認(rèn)
-> Installed analysis-ik
重啟 elasticsearch
[root@db01 ~]# systemctl restart elasticsearch
分詞器測試
創(chuàng)建索引:
curl -XPUT http://localhost:9200/index
創(chuàng)建映射:
curl -XPOST http://localhost:9200/index/fulltext/_mapping -H 'Content-Type:application/json' -d'
{
"properties": {
"content": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
}
}
}'
創(chuàng)建一些文檔:
curl -XPOST http://localhost:9200/index/fulltext/1 -H 'Content-Type:application/json' -d'
{"content":"美國留給伊拉克的是個(gè)爛攤子嗎"}
'
curl -XPOST http://localhost:9200/index/fulltext/2 -H 'Content-Type:application/json' -d'
{"content":"公安部:各地校車將享最高路權(quán)"}
'
curl -XPOST http://localhost:9200/index/fulltext/3 -H 'Content-Type:application/json' -d'
{"content":"中韓漁警沖突調(diào)查:韓警平均每天扣1艘中國漁船"}
'
curl -XPOST http://localhost:9200/index/fulltext/4 -H 'Content-Type:application/json' -d'
{"content":"中國駐洛杉磯領(lǐng)事館遭亞裔男子槍擊 嫌犯已自首"}
'
查詢:
curl -XPOST http://localhost:9200/index/fulltext/_search?pretty -H 'Content-Type:application/json' -d'
{
"query" : { "match" : { "content" : "中國" }},
"highlight" : {
"pre_tags" : ["<tag1>", "<tag2>"],
"post_tags" : ["</tag1>", "</tag2>"],
"fields" : {
"content" : {}
}
}
}
'
《elasticsearch》學(xué)習(xí)回顧
1. 什么叫搜索
2. 為什么mysql不適合全文檢索
3. 什么是全文檢索倒排索引打分
4. es的應(yīng)用場景
5. es特點(diǎn)
- 分布式、高可用蛛砰、搜索分析
6. es安裝部署
- java環(huán)境
- 內(nèi)存不能小于1G
- 磁盤空間充足
- 配置文件開啟內(nèi)存鎖定
- jvm虛擬機(jī)最大最小內(nèi)存都一樣
- 綁定內(nèi)網(wǎng)IP和本地IP(工作場景只需要綁定內(nèi)網(wǎng)IP)
7. 解決內(nèi)存鎖定
- 配置文件增加允許內(nèi)存鎖定參數(shù)
- 重啟es
8. 測試
- ps -ef | grep elasticearch
- ss -lnp | grep 9200
- netstat -lnp | grep 9200
9. 開放防火墻端口
- 9200
- 9300(通信端口)
10. 安裝 es-head 插件
- 安裝包 npm
- chrome 瀏覽器插件
- 先壓縮罐栈,再解壓
11. 概念
- index ---> 庫
- type ---> 表
- doc ---> 行數(shù)據(jù)
- fields ---> 字段
- shards ---> 分片,分庫分表
12. 操作命令 CRUD
- put get post delete
13. 集群配置(生產(chǎn)環(huán)境的標(biāo)配)
cluster.name: linux58 / 集群模式泥畅,必須打開荠诬,同一個(gè)進(jìn)群要全部一樣
node.name: node-1 / 節(jié)點(diǎn)名稱,每個(gè)節(jié)點(diǎn)都不一樣
path.data: /data/elasticsearch / 如果你更換了目錄,要授權(quán)給es用戶和組
path.logs: /var/log/elasticsearch / 如果是集群模式柑贞,日志名為{集群名.log}
bootstrap.memory_lock: true / 內(nèi)存鎖定方椎,一定要打開,然后修改system配置
network.host: 10.0.0.51,127.0.0.1 / 綁定內(nèi)網(wǎng)IP钧嘶,本地IP可以選擇不做
http.port: 9200 / 默認(rèn)9200棠众,還有一個(gè)隱藏的通信端口 9300
discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52","10.0.0.53"] / 集群發(fā)現(xiàn)地址,只要包含自己和集群內(nèi)任意一個(gè)節(jié)點(diǎn)就可以
discovery.zen.minimum_master_nodes: 1 / 選舉相關(guān)參數(shù)有决,多數(shù)節(jié)點(diǎn)數(shù)量 node/2 + 1
http.cors.enabled: true / 為了讓es-head 可以訪問es闸拿,同下
http.cors.allow-origin: "*" / 為了讓es-head 可以訪問es,同上
14. 介紹集群的相關(guān)重要信息
- 分片數(shù)和副本數(shù)
- 默認(rèn)創(chuàng)建索引為5分片书幕,1副本
- 分片一旦創(chuàng)建好就不能更改了
- 副本數(shù)可以隨時(shí)動態(tài)調(diào)整
- 集群健康狀態(tài)
-- red ---> 有數(shù)據(jù)不完整了
-- yellow ---> 數(shù)據(jù)都完整新荤,但是有索引的副本或者分片狀態(tài)不正常
-- green ---> 數(shù)據(jù)都完整,副本也符合條件 - 監(jiān)控節(jié)點(diǎn)數(shù)量
15.模擬故障現(xiàn)象
- 停掉服務(wù)器台汇,觀察集群狀態(tài)
- 要注意迟隅,不能短時(shí)間內(nèi)連續(xù)壞多臺
- 要注意,不餓能短時(shí)間關(guān)閉重啟多個(gè)回合
- 如果是0副本励七,數(shù)據(jù)所在的哪臺機(jī)器智袭,不能壞掉,不然數(shù)據(jù)會丟失
16. kibana 管理 es 集群
- 打開監(jiān)控功能
- DevTools 可以方便執(zhí)行命令
17. 中文分詞器
- 所有es節(jié)點(diǎn)都安裝
- 所有es節(jié)點(diǎn)安裝完成后要重啟才能生效
- 先創(chuàng)建索引
- 在創(chuàng)建映射關(guān)系(類似于mysql建表語句)
- 然后指定使用中文分詞器
- 搜索測試
錯(cuò)誤記錄1
[2019-07-10T11:03:08,175][INFO ][o.e.c.r.a.DiskThresholdMonitor] [node-2] low disk watermark [85%] exceeded on [ctv1Dy7oTNybMQKL3DLiGQ][node-1][/data/elasticsearchdes/0] free: 709mb[13.8%], replicas will not be assigned to this node
[2019-07-10T11:03:38,181][INFO ][o.e.c.r.a.DiskThresholdMonitor] [node-2] low disk watermark [85%] exceeded on [ctv1Dy7oTNybMQKL3DLiGQ][node-1][/data/elasticsearchdes/0] free: 709mb[13.8%], replicas will not be assigned to this node
[2019-07-10T11:04:08,192][INFO ][o.e.c.r.a.DiskThresholdMonitor] [node-2] low disk watermark [85%] exceeded on [ctv1Dy7oTNybMQKL3DLiGQ][node-1][/data/elasticsearchdes/0] free: 709mb[13.8%], replicas will not be assigned to this node
解決方法:
磁盤空間不足掠抬,刪除一部分?jǐn)?shù)據(jù)