一、安装包下载
https://github.com/elastic/elasticsearch/releases
二、安装
解压
bash
tar elasticsearch-7.17.7-linux-x86_64.tar.gz
mv elasticsearch-7.17.7 /opt/elasticsearch
编辑配置文件
bash
cd /opt/elasticsearch/
vim bin/elasticsearch-env
在配置文件最前面加入
ES_JAVA_HOME="/opt/elasticsearch/jdk"
主配置文件内容
yaml
# cat config/elasticsearch.yml
# ======================== Elasticsearch Configuration =========================
# ---------------------------------- Cluster -----------------------------------
cluster.name: es-single-cluster
# ------------------------------------ Node ------------------------------------
node.name: es-node-01
node.roles: [ master, data, ingest ]
# ----------------------------------- Paths ------------------------------------
path.data: /app/elasticsearch/data
path.logs: /app/elasticsearch/logs
# ----------------------------------- Memory -----------------------------------
bootstrap.memory_lock: true
# 允许物理内存检查
bootstrap.system_call_filter: true
# ---------------------------------- Network -----------------------------------
# 绑定所有网络接口,允许远程访问
network.host: 0.0.0.0
# 外界访问的 HTTP 端口
http.port: 9200
# 节点间通信的内部端口
transport.port: 9300
# --------------------------------- Discovery ----------------------------------
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["es-node-01"]
# --------------------------------- Security -------------------------------下面这部分先注释,最后解开---
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /opt/elasticsearch/config/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /opt/elasticsearch/config/elastic-certificates.p12
# ---------------------------------- Various -----------------------------------
action.destructive_requires_name: true
ingest.geoip.downloader.enabled: false
bash
vim config/jvm.options
加入以下内容,大小根据内存调整
-Xms16g
-Xmx16g
新建service文件
bash
vim /usr/lib/systemd/system/elasticsearch.service
内容如下
Description=Elasticsearch
Documentation=https://www.elastic.co
After=network.target network-online.target
Wants=network-online.target
[Service]
# 改为 simple 模式,让 systemd 更好地追踪和守护 Java 主进程
Type=simple
User=elasticsearch
Group=elasticsearch
ExecStart=/opt/elasticsearch/bin/elasticsearch
# 停止超时时间,ES在关闭时需要刷盘和迁移分片
TimeoutStopSec=0
# 内存与文件资源限制优化(满足 ES 生产环境引导检查)
LimitNOFILE=65535
LimitNPROC=4096
LimitMEMLOCK=infinity
LimitAS=infinity
LimitFSIZE=infinity
Restart=on-failure
# 确保 JVM 内存映射区域不会被内核异常限制
VM_MAX_MAP_COUNT=262144
# 垃圾回收和退出状态码兼容
SuccessExitStatus=143
# 关闭安全沙箱的本地临时目录隔离(防止某些特定插件或导出因找不到 /tmp 报错)
PrivateTmp=true
[Install]
WantedBy=multi-user.target
bash
systemctl daemon-reload
创建用和目录
bash
useradd elasticsearch
mkdir -p /app/elasticsearch/data
mkdir -p /app/elasticsearch/logs
chown elasticsearch:elasticsearch /app/elasticsearch -R
chown elasticsearch:elasticsearch /opt/elasticsearch -R
接下来的配置切换到elasticsearch来操作
bash
su - elasticsearch
cd /opt/elasticsearch
./bin/elasticsearch-certutil ca # 一路回车
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 #一路回车
mv elastic-certificates.p12 config/
bin/elasticsearch #看看是否有报错,没有报错则正常
切换回root用户
bash
vim /etc/security/limits.conf
加入以下内容
elasticsearch soft nofile 65536
elasticsearch hard nofile 65536
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
elasticsearch soft nproc 4096
elasticsearch hard nproc 4096
bash
vim /etc/sysctl.conf
加入以下内容
vm.max_map_count=262144
bash
vim /etc/sysctl.conf
加入以下内容
sysctl -p
bash
systemctl start elasticsearch
systemctl status elasticsearch
切换回elasticsearch用户
bash
su - elasticsearch
./bin/elasticsearch-setup-passwords interactive #然后输入每个用户的密码
切换回root用户,解开主配置文件的注释
systemctl stop elasticsearch
systemctl start elasticsearch
测试
curl -uelastic:elastic http://192.168.192.33:9200/_cluster/health?pretty
{
"cluster_name" : "es-single-cluster",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 3,
"active_shards" : 3,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}