電商購物網(wǎng)站建設杭州網(wǎng)站優(yōu)化流程
1 elasticsearch介紹
Elasticsearch 是一個分布式、高擴展、高實時的搜索與數(shù)據(jù)分析引擎??梢院芊奖愕氖勾罅繑?shù)據(jù)具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸縮性。Elasticsearch 的實現(xiàn)原理主要分為以下幾個步驟,首先用戶將數(shù)據(jù)提交到Elasticsearch 數(shù)據(jù)庫中,再通過分詞控制器去將對應的語句分詞,將其權重和分詞結果一并存入數(shù)據(jù),當用戶搜索數(shù)據(jù)時候,再根據(jù)權重將結果排名,打分,再將返回結果呈現(xiàn)給用戶。
Elasticsearch是與Logstash的數(shù)據(jù)收集和日志解析引擎以及名為Kibana的分析和可視化平臺一起開發(fā)的。這三個產(chǎn)品被設計成一個集成解決方案,稱為“Elastic Stack”(以前稱為“ELK stack”)。
Elasticsearch可以用于搜索各種文檔。它提供可擴展的搜索,具有接近實時的搜索,并支持多租戶。Elasticsearch是分布式的,這意味著索引可以被分成分片,每個分片可以有0個或多個副本。每個節(jié)點托管一個或多個分片,并充當協(xié)調(diào)器將操作委托給正確的分片。再平衡和路由是自動完成的。相關數(shù)據(jù)通常存儲在同一個索引中,該索引由一個或多個主分片和零個或多個復制分片組成。一旦創(chuàng)建了索引,就不能更改主分片的數(shù)量。
2 ES相關的術語介紹
**index:**也叫索引,一個索引最少要有一個分片。指的是邏輯的存儲和讀取單元。一個索引也可以叫做1個文檔名
**shard:**分片,用于實際存儲數(shù)據(jù)信息。索引數(shù)據(jù)可以分布到集群中的不同節(jié)點,每個索引可以分為多個分片。分片可以提高數(shù)據(jù)存儲和查詢的效率
**replica:**副本,用于索引分片冗余,以及提高數(shù)據(jù)的可靠性和查詢性能。副本可以分布在不同的節(jié)點上,確保即使某些節(jié)點故障,數(shù)據(jù)也不會丟失
**primary shard:**主分片,負責數(shù)據(jù)的讀寫
**replica shard:**副本分片,從primary shard同步數(shù)據(jù)且,負責讀的負載均衡。也就是說讀數(shù)據(jù)時,會往多個副本讀取。
**allocation:**把索引的不同分片分配到整個集群的過程
**document:**文檔,用于的實際數(shù)據(jù)的載體,分為元數(shù)據(jù)和源數(shù)據(jù)
-
源數(shù)據(jù):指的是用戶實際的存儲。數(shù)據(jù)存儲在"_source"字段中
-
元數(shù)據(jù):用于描述數(shù)據(jù)的數(shù)據(jù),比如
_index,_id,_type,_source
ES集群顏色和含義:
-
green代表所有的主分片和副本分片都正常訪問
-
yellow代碼部分副本分片無法訪問
- 例如,副本數(shù)量大于集群數(shù)量。導致沒有可用節(jié)點分配
-
red代表部分主分片無法訪問
ES相關端口:
- 9200,支持http|https協(xié)議,對外部提供服務訪問
- 9300,支持tcp協(xié)議,對內(nèi)部ES集群進行數(shù)據(jù)傳輸
2 elasticsearch的安裝
01 單點方式部署
IP | 主機名 | 內(nèi)存 |
---|---|---|
10.0.0.091 | elk91 | 2G |
提示:elasticsearch的deb安裝包集成了java環(huán)境,因此安裝包體積較大,也可以二進制部署,軟件和java環(huán)境分開部署。
1.以7.17.22版本為例:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.22-amd64.deb
2.安裝軟件包
dpkg -i elasticsearch-7.17.22-amd64.deb
3.修改配置文件:vim /etc/elasticsearch/elasticsearch.yml
# 指定集群的名稱,每個ES集群的名稱要唯一
17 cluster.name: wzy-com# 數(shù)據(jù)的存儲路徑,默認即可
33 path.data: /var/lib/elasticsearch# 日志的存儲路徑,默認即可
37 path.logs: /var/log/elasticsearch# 指定監(jiān)聽本地的地址,監(jiān)聽全部則寫成 0.0.0.0
56 #network.host: 10.0.0.91# 對外的訪問端口
http.port: 9200# 集群之間數(shù)據(jù)傳輸端口
61 #http.port: 9200# 部署集群為單點類型
discovery.type: "single-node"
簡化的配置為:
[root@elk91~]# yy /etc/elasticsearch/elasticsearch.yml
cluster.name: wzy-com
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
discovery.type: "single-node"
3.啟動es
systemctl restart elasticsearch.service[root@elk91~]# netstat -antlp | grep 9[23]00
tcp6 0 0 :::9300 :::* LISTEN 3235/java
tcp6 0 0 :::9200 :::* LISTEN 3235/java
4.如果啟動失敗,就去看日志:/var/log/elasticsearch/wzy-com.log;或者journalctl -fu elasticsearch
5.訪問es
[root@elk91~]# curl http://10.0.0.91:9200
{"name" : "elk91","cluster_name" : "wzy-com","cluster_uuid" : "ypPsMv8WQOmQZ3H1VSF-Xw","version" : {"number" : "7.17.22","build_flavor" : "default","build_type" : "deb","build_hash" : "38e9ca2e81304a821c50862dafab089ca863944b","build_date" : "2024-06-06T07:35:17.876121680Z","build_snapshot" : false,"lucene_version" : "8.11.3","minimum_wire_compatibility_version" : "6.8.0","minimum_index_compatibility_version" : "6.0.0-beta1"},"tagline" : "You Know, for Search"
}
6.卸載es
dpkg命令說明:
-
dpkg -r 卸載
-
dpkg -P 卸載并移除配置文件
卸載后再使用rm -rf /tmp*
02 集群方式部署
1.環(huán)境準備
IP地址 | 主機名 |
---|---|
10.0.0.91 | elk91 |
10.0.0.92 | elk92 |
10.0.0.93 | elk93 |
- 所有節(jié)點設置正確的時間:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
- 安裝ES軟件
1.所有節(jié)點修改配置文件為:
cat >/etc/elasticsearch/elasticsearch.yml <<EOF
cluster.name: elk-wzy
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300# 配置ES集群的服務發(fā)現(xiàn)列表主機
discovery.seed_hosts: ["10.0.0.91","10.0.0.92","10.0.0.93"]# 配置ES集群啟動時參與master選舉的節(jié)點
cluster.initial_master_nodes: ["10.0.0.91","10.0.0.92","10.0.0.93"]
EOF
最后啟動es:systemctl enable elasticsearch --now
2.驗證是否為集群還是腦裂。訪問任意1個節(jié)點,看到主機列表為3個節(jié)點就是搭建成功了。否則卸載重新搭建
[root@elk91~]# curl -s 10.0.0.93:9200/_cat/nodes
10.0.0.91 29 96 5 0.66 0.53 0.44 cdfhilmrstw - elk91
10.0.0.93 25 96 2 0.60 0.43 0.22 cdfhilmrstw - elk93
10.0.0.92 48 96 3 0.47 0.57 0.32 cdfhilmrstw * elk92
# 卸載
systemctl disable elasticsearch --now
dpkg -P elasticsearch
rm -rf /tmp/* /var/{log,lib}/elasticsearch# 安裝
dpkg -i elasticsearch-7.17.22-amd64.deb
cat >/etc/elasticsearch/elasticsearch.yml <<EOF
cluster.name: efk-wzy
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
discovery.seed_hosts: ["10.0.0.91","10.0.0.92","10.0.0.93"]
cluster.initial_master_nodes: ["10.0.0.91","10.0.0.92","10.0.0.93"]
EOF
systemctl enable elasticsearch --now
03 ES的堆內(nèi)存設置
此操作為可選項:
-Xms
和 -Xmx
是 JVM(Java 虛擬機)啟動參數(shù),用于設置堆內(nèi)存(Heap Memory)的初始大小和最大大小。這兩個參數(shù)直接影響 Java 應用的性能和內(nèi)存管理。建議設置為主機內(nèi)存的一半
修改 /etc/elasticsearch/jvm.options ,
...
-Xms4096m
-Xmx4096m
...