Elasticsearch安装与配置 #

一、安装前准备 #

1.1 系统要求 #

要求 说明
Java版本 ES 8.x内置JDK,无需单独安装
内存 最小2GB,生产建议8GB以上
磁盘 SSD推荐,避免NAS存储
操作系统 Linux/macOS/Windows

1.2 端口说明 #

端口 用途
9200 HTTP REST API端口
9300 节点间通信端口(TCP)

二、Docker安装(推荐) #

2.1 单节点安装 #

bash
docker network create elastic

docker run -d \
  --name elasticsearch \
  --net elastic \
  -p 9200:9200 \
  -e "discovery.type=single-node" \
  -e "xpack.security.enabled=false" \
  -m 2GB \
  docker.elastic.co/elasticsearch/elasticsearch:8.12.0

2.2 带安全配置安装 #

bash
docker run -d \
  --name elasticsearch \
  --net elastic \
  -p 9200:9200 \
  -e "discovery.type=single-node" \
  -e "ELASTIC_PASSWORD=your_password" \
  -e "xpack.security.enabled=true" \
  -e "xpack.security.enrollment.enabled=true" \
  -e "xpack.security.http.ssl.enabled=true" \
  -e "xpack.security.transport.ssl.enabled=true" \
  -m 4GB \
  docker.elastic.co/elasticsearch/elasticsearch:8.12.0

2.3 使用Docker Compose #

yaml
version: '3.8'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.12.0
    container_name: elasticsearch
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=false
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - es_data:/usr/share/elasticsearch/data
    networks:
      - elastic

  kibana:
    image: docker.elastic.co/kibana/kibana:8.12.0
    container_name: kibana
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch
    networks:
      - elastic

volumes:
  es_data:
    driver: local

networks:
  elastic:
    driver: bridge

启动命令:

bash
docker-compose up -d

三、Linux安装 #

3.1 下载安装包 #

bash
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.12.0-linux-x86_64.tar.gz

tar -xzf elasticsearch-8.12.0-linux-x86_64.tar.gz

cd elasticsearch-8.12.0

3.2 创建用户 #

bash
sudo useradd elasticsearch

sudo chown -R elasticsearch:elasticsearch /path/to/elasticsearch-8.12.0

3.3 启动服务 #

bash
su elasticsearch

./bin/elasticsearch

3.4 后台运行 #

bash
./bin/elasticsearch -d -p pid

3.5 验证安装 #

bash
curl -X GET "localhost:9200"

响应示例:

json
{
  "name" : "node-1",
  "cluster_name" : "elasticsearch",
  "version" : {
    "number" : "8.12.0"
  },
  "tagline" : "You Know, for Search"
}

四、macOS安装 #

4.1 使用Homebrew #

bash
brew tap elastic/tap

brew install elastic/tap/elasticsearch-full

brew services start elastic/tap/elasticsearch-full

4.2 手动安装 #

bash
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.12.0-darwin-x86_64.tar.gz

tar -xzf elasticsearch-8.12.0-darwin-x86_64.tar.gz

cd elasticsearch-8.12.0

./bin/elasticsearch

五、Windows安装 #

5.1 下载解压 #

  1. 下载ZIP包:https://www.elastic.co/downloads/elasticsearch
  2. 解压到目标目录

5.2 启动服务 #

powershell
.\bin\elasticsearch.bat

5.3 安装为Windows服务 #

powershell
.\bin\elasticsearch-service.bat install

.\bin\elasticsearch-service.bat start

六、核心配置 #

6.1 配置文件位置 #

text
config/
├── elasticsearch.yml  # 主配置文件
├── jvm.options        # JVM配置
└── log4j2.properties  # 日志配置

6.2 elasticsearch.yml核心配置 #

yaml
cluster.name: my-application

node.name: node-1

path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch

network.host: 0.0.0.0
http.port: 9200

discovery.seed_hosts: ["host1", "host2"]
cluster.initial_master_nodes: ["node-1", "node-2"]

xpack.security.enabled: false

6.3 JVM配置 #

编辑 config/jvm.options

text
-Xms4g
-Xmx4g

-XX:+UseG1GC
-XX:G1HeapRegionSize=16m
-XX:+HeapDumpOnOutOfMemoryError

6.4 系统配置 #

Linux系统限制

bash
sudo sysctl -w vm.max_map_count=262144

echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf

文件描述符限制

bash
ulimit -n 65536

/etc/security/limits.conf 添加:

text
elasticsearch soft nofile 65536
elasticsearch hard nofile 65536

七、生产环境配置 #

7.1 内存配置 #

text
内存分配原则
├── 堆内存
│   ├── 不超过物理内存50%
│   ├── 最大不超过32GB
│   └── Xms和Xmx设置相同
└── 留给Lucene
    └── 至少50%内存用于操作系统缓存

7.2 集群配置示例 #

yaml
cluster.name: production-cluster

node.name: ${HOSTNAME}
node.roles: [master, data, ingest]

network.host: _site_
http.port: 9200
transport.port: 9300

discovery.seed_hosts: 
  - "node1:9300"
  - "node2:9300"
  - "node3:9300"

cluster.initial_master_nodes: 
  - "node1"
  - "node2"
  - "node3"

gateway.recover_after_nodes: 2
gateway.expected_nodes: 3
gateway.recover_after_time: 5m

xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.http.ssl.enabled: true

7.3 JVM生产配置 #

text
-Xms16g
-Xmx16g

-XX:+UseG1GC
-XX:G1HeapRegionSize=32m
-XX:InitiatingHeapOccupancyPercent=30
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/log/elasticsearch/heapdump.hprof

-Djava.io.tmpdir=/tmp

-XX:+ExitOnOutOfMemoryError

八、安装Kibana #

8.1 Docker安装 #

bash
docker run -d \
  --name kibana \
  --net elastic \
  -p 5601:5601 \
  -e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" \
  docker.elastic.co/kibana/kibana:8.12.0

8.2 配置连接 #

编辑 config/kibana.yml

yaml
server.host: "0.0.0.0"
server.port: 5601

elasticsearch.hosts: ["http://localhost:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "your_password"

i18n.locale: "zh-CN"

8.3 访问Kibana #

打开浏览器访问:http://localhost:5601

九、健康检查 #

9.1 集群健康 #

bash
curl -X GET "localhost:9200/_cluster/health?pretty"

响应示例:

json
{
  "cluster_name" : "elasticsearch",
  "status" : "green",
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 1,
  "active_shards" : 1,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0
}

9.2 节点信息 #

bash
curl -X GET "localhost:9200/_nodes/stats?pretty"

9.3 索引列表 #

bash
curl -X GET "localhost:9200/_cat/indices?v"

十、常见问题 #

10.1 启动失败 #

text
问题:max virtual memory areas vm.max_map_count [65530] is too low
解决:sudo sysctl -w vm.max_map_count=262144

10.2 内存不足 #

text
问题:Java heap space
解决:调整jvm.options中的-Xms和-Xmx

10.3 端口占用 #

bash
lsof -i :9200

kill -9 <PID>

10.4 权限问题 #

bash
chown -R elasticsearch:elasticsearch /var/lib/elasticsearch
chown -R elasticsearch:elasticsearch /var/log/elasticsearch

十一、总结 #

本章介绍了Elasticsearch的安装配置:

  1. Docker安装是最简单的方式
  2. 生产环境需要配置JVM和系统参数
  3. 安全配置在生产环境必须开启
  4. Kibana是管理和可视化的重要工具
  5. 定期检查集群健康状态

下一步,我们将学习Elasticsearch的核心概念。

最后更新:2026-03-27