五、Elasticsearch在Linux的安裝部署
文章目錄
- 五、Elasticsearch在Linux的安裝部署
- 1.Elasticsearch的作用
- 2.安裝
- 0. 安裝前準備
- 1.使用包管理器安裝(推薦,自動服務化)
- Ubuntu / Debian
- RHEL / CentOS / Rocky / Alma
- 2. 使用 tar.gz 安裝(靈活可控)
- 3.Docker 安裝(最快)
- 4. 配置文件(重要)
- 5.驗證安裝
- 6.常見問題 & 解決
- 7.Kibana(可選)
- 3.快速一次性安裝(finalshell中直接復制)
1.Elasticsearch的作用
Elasticsearch 是一個 分布式搜索與分析引擎,底層基于 Lucene。它的核心價值是能在海量數據中進行高效、復雜的搜索與實時分析。
主要特點:
- 全文搜索:支持自然語言全文檢索、模糊匹配、短語搜索、高亮等
- 結構化搜索:對結構化字段(數值、日期、地理位置等)快速過濾與排序
- 實時分析:能在秒級時間內統計、聚合和可視化數據
- 分布式:可以水平擴展到多個節點,存儲和處理 PB 級數據
- 多類型數據:支持文本、數字、時間、地理位置、JSON 文檔等
2.安裝
0. 安裝前準備
- Java 環境:8.x 自帶內置 JDK(不需要單獨安裝)
- 內存:建議 4GB 以上(默認 JVM 占 1GB)
- 用戶權限:不要用 root 直接運行 ES(會被拒絕),建議創建
elasticsearch
用戶 - 網絡端口:
- 9200:HTTP API
- 9300:集群節點間通信
- 文件描述符:至少 65535,否則可能報錯
1.使用包管理器安裝(推薦,自動服務化)
Ubuntu / Debian
# 1. 導入簽名
sudo apt update
sudo apt -y install apt-transport-https curl gnupg
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg# 2. 添加倉庫
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" \| sudo tee /etc/apt/sources.list.d/elasticsearch-8.x.list# 3. 安裝
sudo apt update
sudo apt install -y elasticsearch# 4. 開機自啟 + 啟動
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
RHEL / CentOS / Rocky / Alma
# 1. 導入簽名
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch# 2. 添加 yum 倉庫
sudo tee /etc/yum.repos.d/elasticsearch.repo >/dev/null <<'EOF'
[elasticsearch-8.x]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF# 3. 安裝
sudo dnf install -y elasticsearch || sudo yum install -y elasticsearch# 4. 開機自啟 + 啟動
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
2. 使用 tar.gz 安裝(靈活可控)
# 1. 下載(以 8.14.1 為例)
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.14.1-linux-x86_64.tar.gz# 2. 解壓
tar -xzf elasticsearch-8.14.1-linux-x86_64.tar.gz
mv elasticsearch-8.14.1 /opt/elasticsearch# 3. 創建運行用戶
sudo useradd -r -s /bin/false elasticsearch
sudo chown -R elasticsearch:elasticsearch /opt/elasticsearch# 4. 切換用戶運行
sudo -u elasticsearch /opt/elasticsearch/bin/elasticsearch
首次運行會在控制臺輸出:
- 生成的 elastic 用戶密碼
- CA 證書
- HTTP 證書位置
3.Docker 安裝(最快)
docker network create elastic
docker run -d --name es01 --net elastic \-p 9200:9200 -p 9300:9300 \-e ELASTIC_PASSWORD=StrongPass123 \docker.elastic.co/elasticsearch/elasticsearch:8.14.1
訪問 http://localhost:9200
,使用 elastic / StrongPass123
登錄。
4. 配置文件(重要)
配置文件位置:
- 包管理器安裝:
/etc/elasticsearch/elasticsearch.yml
- tar 包安裝:
config/elasticsearch.yml
常用配置:
cluster.name: my-cluster
node.name: node-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200# 生產環境必須至少兩個節點才能關閉 bootstrap 檢查
discovery.type: single-node
修改后重啟:
sudo systemctl restart elasticsearch
5.驗證安裝
curl -k -u elastic:<密碼> https://localhost:9200
輸出中應包含:
{"name" : "node-1","cluster_name" : "my-cluster","cluster_uuid" : "...","version" : {"number" : "8.14.1",...},"tagline" : "You Know, for Search"
}
6.常見問題 & 解決
- max virtual memory areas vm.max_map_count [65530] is too low
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
2.root 用戶運行報錯
- 切換到非 root 用戶:
sudo -u elasticsearch ...
- 無法遠程訪問
network.host: 0.0.0.0
- 開放 9200 端口:
sudo ufw allow 9200/tcp # Ubuntu
sudo firewall-cmd --permanent --add-port=9200/tcp && sudo firewall-cmd --reload # RHEL
- 忘記密碼
sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
7.Kibana(可選)
Elasticsearch 可配套 Kibana 使用:
# Ubuntu
sudo apt install -y kibana
sudo systemctl enable kibana
sudo systemctl start kibana# RHEL
sudo dnf install -y kibana || sudo yum install -y kibana
sudo systemctl enable kibana
sudo systemctl start kibana
訪問 http://<服務器IP>:5601
3.快速一次性安裝(finalshell中直接復制)
1. 導入 GPG 公鑰sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch2. 添加 Elasticsearch 官方 YUM 倉庫sudo tee /etc/yum.repos.d/elasticsearch.repo >/dev/null <<'EOF'
[elasticsearch-8.x]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF3. 安裝 Elasticsearchsudo yum install -y elasticsearch4. 修改配置文件(允許遠程訪問)sudo sed -i '/^#\?network.host/d' /etc/elasticsearch/elasticsearch.yml
sudo tee -a /etc/elasticsearch/elasticsearch.yml >/dev/null <<'EOF'
cluster.name: my-es-cluster
node.name: node-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node
EOF5. 系統參數優化(必須,不然會報錯)echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p6. 啟動并設置開機自啟sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch7. 防火墻放行 9200 端口(如果開啟了防火墻)sudo firewall-cmd --permanent --add-port=9200/tcp
sudo firewall-cmd --reload8. 等待啟動(第一次可能 30 秒以上),查看狀態sudo systemctl status elasticsearch