ElasticSearch从零到一:Windows与Linux双平台安装配置指南
一、ElasticSearch安装前准备
1.1 版本选择与环境要求
对于初学者,建议直接从Windows版本开始学习。ElasticSearch从7.x版本开始内置了Java环境,无需单独安装JDK,降低了入门门槛。
官方安装文档:https://www.elastic.co/guide/en/elasticsearch/reference/8.14/install-elasticsearch.html
硬件要求:
-
内存:建议4G以上,JVM分配1G以上内存
-
磁盘空间:至少预留5GB可用空间
-
操作系统:Windows 10/11、Linux各主流发行版
1.2 ElasticSearch目录结构解析
下载解压后,ElasticSearch的目录结构如下:
| 目录 | 说明 |
|---|---|
bin/ | 脚本文件,包括启动elasticsearch、安装插件、运行统计数据等 |
config/ | 配置文件目录,如elasticsearch配置、角色配置、JVM配置等 |
jdk/ | 7.x以后特有,自带的Java环境 |
data/ | 默认的数据存放目录,包含节点、分片、索引、文档的所有数据 |
lib/ | elasticsearch依赖的Java类库 |
logs/ | 默认的日志文件存储路径 |
modules/ | 包含所有的Elasticsearch模块,如Cluster、Discovery、Indices等 |
plugins/ | 已安装插件目录 |
二、Windows平台安装ElasticSearch
2.1 下载与解压
下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.14.3-windows-x86_64.zip
下载完成后,将压缩包解压到合适目录,如:D:\elasticsearch-8.14.3
2.2 配置JDK环境变量(可选)
ElasticSearch 7.x+版本已内置JDK,但可以通过环境变量指定使用自定义JDK:
环境变量优先级:ES_JAVA_HOME > ES_HOME > 内置JDK
-
ES_JAVA_HOME:指定ElasticSearch使用的Java运行时环境路径 -
ES_HOME:指定ElasticSearch的安装路径
Windows设置环境变量:
-
右键"此电脑" → 属性 → 高级系统设置 → 环境变量
-
新建系统变量:
ES_JAVA_HOME = D:\java\jdk-17 ES_HOME = D:\elasticsearch-8.14.3
2.3 配置文件调整
编辑config/elasticsearch.yml文件,进行以下配置:
yaml
# 关闭安全认证(初学者建议关闭) xpack.security.enabled: false # 配置集群名称 cluster.name: my-elasticsearch # 配置节点名称 node.name: node-1 # 配置数据存储路径(默认在ES_HOME/data) path.data: D:\elasticsearch-data\data # 配置日志存储路径 path.logs: D:\elasticsearch-data\logs # 配置网络访问 network.host: 0.0.0.0 http.port: 9200 # 开发模式配置(绕过引导检查) discovery.type: single-node
2.4 解决中文乱码问题
编辑config/jvm.options文件,在文件末尾添加:
-Dfile.encoding=GBK
2.5 启动ElasticSearch服务
进入bin目录,双击elasticsearch.bat启动服务。
端口说明:
-
9300端口:Elasticsearch集群间组件通信端口
-
9200端口:HTTP协议RESTful端口,浏览器访问端口
验证启动成功:
打开浏览器,访问:http://localhost:9200
如果看到类似以下JSON响应,说明启动成功:
json
{
"name": "node-1",
"cluster_name": "my-elasticsearch",
"cluster_uuid": "xxxxx",
"version": {
"number": "8.14.3",
"build_flavor": "default",
"build_type": "zip",
"build_hash": "xxxxx",
"build_date": "2024-xx-xx",
"build_snapshot": false,
"lucene_version": "9.10.0",
"minimum_wire_compatibility_version": "7.17.0",
"minimum_index_compatibility_version": "7.0.0"
},
"tagline": "You Know, for Search"
}
三、Linux平台安装ElasticSearch
3.1 环境准备
系统信息:
-
操作系统:CentOS 7
-
IP地址:192.168.65.47
-
操作用户:fox
重要提醒:ElasticSearch不允许使用root账号启动服务!
3.2 创建专用用户
bash
# 切换到root用户 su root # 创建fox用户 adduser fox passwd fox # 为用户授予sudo权限(可选) usermod -aG wheel fox
3.3 下载与解压
切换到fox用户,下载并解压ElasticSearch:
bash
# 切换到fox用户 su fox cd /home/fox # 下载ElasticSearch wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.14.3-linux-x86_64.tar.gz # 解压 tar -xzf elasticsearch-8.14.3-linux-x86_64.tar.gz cd elasticsearch-8.14.3/
如果在root用户下解压:
bash
# 修改文件所有者 chown -R fox:fox elasticsearch-8.14.3
3.4 配置环境变量(可选)
编辑用户环境变量配置文件:
bash
vim ~/.bash_profile # 添加以下内容 export ES_JAVA_HOME=/home/fox/elasticsearch-8.14.3/jdk/ export ES_HOME=/home/fox/elasticsearch-8.14.3 export PATH=$PATH:$ES_HOME/bin # 使配置生效 source ~/.bash_profile
3.5 配置文件调整
编辑config/elasticsearch.yml:
yaml
# 节点名称 node.name: node-1 # 集群名称 cluster.name: my-cluster # 数据存储路径 path.data: /home/fox/elasticsearch-data/data # 日志存储路径 path.logs: /home/fox/elasticsearch-data/logs # 网络配置 network.host: 0.0.0.0 http.port: 9200 # 单节点模式(开发模式,绕过引导检查) discovery.type: single-node # 关闭安全认证(初学者建议关闭) xpack.security.enabled: false
3.6 JVM参数配置
编辑config/jvm.options,调整堆内存大小:
properties
# 最小堆内存 -Xms4g # 最大堆内存 -Xmx4g
JVM配置建议:
-
Xms和Xmx设置成相同值,避免运行时调整
-
Xmx不要超过机器内存的50%
-
不要超过30GB(JVM性能考虑)
3.7 启动ElasticSearch
bash
# 前台启动 bin/elasticsearch # 后台启动 bin/elasticsearch -d # 查看进程 ps -ef | grep elasticsearch
验证启动:
浏览器访问:http://192.168.65.47:9200
四、开发模式与生产模式详解
4.1 开发模式
特点:
-
默认配置(未配置集群发现设置)
-
适合学习和开发环境
-
可通过
discovery.type: single-node绕过引导检查
配置示例:
yaml
discovery.type: single-node
4.2 生产模式
特点:
-
修改集群相关配置后触发
-
启动时进行引导检查(bootstrap checks)
-
检查项包括:JVM大小、内存锁、虚拟内存、最大线程数等
引导检查目的:
-
防止用户在不了解ES的情况下启动服务
-
避免后期性能问题难以解决
-
确保集群稳定性和可维护性
生产模式必填配置:
yaml
# 集群发现种子主机列表 discovery.seed_hosts: ["host1", "host2"] # 初始主节点列表 cluster.initial_master_nodes: ["node-1", "node-2"]
五、生产模式常见错误及解决方案
5.1 文件描述符限制错误
错误信息:
text
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
解决方案:
bash
# 切换到root用户 sudo su # 编辑limits.conf vim /etc/security/limits.conf # 添加以下内容 * soft nofile 65536 * hard nofile 65536 * soft nproc 4096 * hard nproc 4096 # 重启系统或重新登录用户
5.2 线程数限制错误
错误信息:
text
max number of threads [1024] for user [es] is too low, increase to at least [4096]
解决方案:
bash
vim /etc/security/limits.d/20-nproc.conf # 修改为 * soft nproc 4096
5.3 虚拟内存限制错误
错误信息:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决方案:
bash
vim /etc/sysctl.conf # 添加 vm.max_map_count=262144 # 使配置生效 sysctl -p
5.4 集群发现配置错误
错误信息:
the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
解决方案:
yaml
# 方法1:配置集群发现 discovery.seed_hosts: ["192.168.1.1", "192.168.1.2"] cluster.initial_master_nodes: ["node-1", "node-2"] # 方法2:设置为单节点模式(仅开发环境) discovery.type: single-node
六、ElasticSearch常用配置参数详解
| 参数 | 说明 | 默认值 | 生产建议 |
|---|---|---|---|
cluster.name | 集群名称 | elasticsearch | 根据用途修改,不同环境使用不同名称 |
node.name | 节点名称 | 主机名 | 明确指定,便于识别 |
path.data | 数据存储目录 | ES_HOME/data | 部署到独立目录,防止升级误删 |
path.logs | 日志存储目录 | ES_HOME/logs | 部署到独立目录 |
bootstrap.memory_lock | 内存锁定检查 | true | 生产环境建议true,非生产可设为false |
network.host | 网络绑定地址 | 127.0.0.1 | 根据网络环境配置 |
http.port | HTTP服务端口 | 9200 | 保持默认或根据需求修改 |
transport.port | 节点通信端口 | 9300 | 保持默认 |
discovery.seed_hosts | 集群发现主机列表 | [] | 生产环境必填 |
cluster.initial_master_nodes | 初始主节点列表 | [] | 首次构建集群时必填 |
七、ElasticSearch浏览器插件安装
7.1 常用插件推荐
| 插件名称 | 图标 | 功能 | 下载地址 |
|---|---|---|---|
| Elasticsearch Head | https://image | 查看集群节点数据,管理索引和分片 | GitHub |
| Elasticsearch Tools | https://image | 查看节点资源占用,执行查询语句 | Edge商店 |
| Elasticvue | https://image | 功能强大,对国人友好 | 官方网站 |
7.2 Elasticvue界面展示
Elasticvue提供直观的集群管理界面,支持:
-
集群状态监控
-
索引管理
-
查询执行
-
数据可视化
八、Kibana可视化平台安装
8.1 下载与解压
下载地址:https://www.elastic.co/cn/downloads/past-releases#kibana
Linux下载:
bash
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.14.3-linux-x86_64.tar.gz tar -zxvf kibana-8.14.3-linux-x86_64.tar.gz cd kibana-8.14.3
8.2 配置文件调整
编辑config/kibana.yml:
yaml
# Kibana服务端口 server.port: 5601 # 绑定地址(允许远程访问) server.host: "0.0.0.0" # ElasticSearch连接地址 elasticsearch.hosts: ["http://localhost:9200"] # 界面语言设置为中文 i18n.locale: "zh-CN"
8.3 启动Kibana
Linux启动:
bash
# 前台启动 bin/kibana # 后台启动 nohup bin/kibana > logs/kibana.log 2>&1 & # 检查端口 netstat -tunlp | grep 5601
Windows启动:直接执行bin\kibana.bat
访问Kibana:http://localhost:5601
8.4 常用_cat API
Kibana的Dev Tools控制台支持以下常用_cat API:
bash
# 查看集群整体情况 GET /_cat/allocation # 查看节点信息 GET /_cat/nodes # 查看所有索引 GET /_cat/indices # 查看集群健康状态 GET /_cat/health # 查看分片信息 GET /_cat/shards # 查看主节点信息 GET /_cat/master # 查看文档数量 GET /_cat/count
九、中文分词插件安装与配置
9.1 在线安装分词插件
安装analysis-icu插件:
bash
# 查看已安装插件 bin/elasticsearch-plugin list # 安装icu插件 bin/elasticsearch-plugin install analysis-icu # 删除插件 bin/elasticsearch-plugin remove analysis-icu # 重启ES生效
icu插件功能:
-
基于ICU库提供高级文本分析
-
支持多语言和复杂Unicode文本处理
-
包含ICU分词器和标准化过滤器
测试分词效果:
json
POST _analyze
{
"analyzer": "icu_analyzer",
"text": "中华人民共和国"
}
9.2 离线安装IK分词器
下载地址:
版本匹配:IK分词器版本必须与ES版本严格对应!
安装步骤:
-
下载对应版本的IK分词器插件
-
解压到
plugins目录 -
重启ElasticSearch服务
9.3 IK分词器使用
三种分词模式对比:
json
# 1. ES默认分词器(单字拆分)
POST _analyze
{
"analyzer": "standard",
"text": "中华人民共和国"
}
# 结果:["中","华","人","民","共","和","国"]
# 2. ik_smart(最粗粒度拆分)
POST _analyze
{
"analyzer": "ik_smart",
"text": "中华人民共和国"
}
# 结果:["中华人民共和国"]
# 3. ik_max_word(最细粒度拆分)
POST _analyze
{
"analyzer": "ik_max_word",
"text": "中华人民共和国"
}
# 结果:["中华人民共和国","中华人民","中华","华人","人民","共和国","共和","国"]
9.4 索引级别分词器配置
创建索引时指定默认分词器:
json
PUT /employee
{
"settings": {
"index": {
"analysis.analyzer.default.type": "ik_max_word"
}
}
}
9.5 字段级别分词器配置
创建索引并指定字段分词器:
json
# 创建索引
PUT /index
# 配置字段映射
POST /index/_mapping
{
"properties": {
"content": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
}
}
}
映射属性解释:
-
type: "text":字段类型为文本,支持全文搜索 -
analyzer: "ik_max_word":索引时使用最细粒度分词,提高召回率 -
search_analyzer: "ik_smart":搜索时使用智能分词,提高准确率
插入测试数据:
json
POST /index/_create/1
{"content": "美国留给伊拉克的是个烂摊子吗"}
POST /index/_create/2
{"content": "公安部:各地校车将享最高路权"}
POST /index/_create/3
{"content": "中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}
POST /index/_create/4
{"content": "中国驻洛杉矶领事馆遭亚裔男子枪击嫌犯已自首"}
带高亮的查询示例:
json
POST /index/_search
{
"query": {
"match": {
"content": "中国"
}
},
"highlight": {
"pre_tags": ["<em>"],
"post_tags": ["</em>"],
"fields": {
"content": {}
}
}
}
十、总结与最佳实践
10.1 安装流程总结
-
环境准备:确保内存和磁盘空间充足
-
用户创建:Linux下创建非root用户
-
下载解压:获取对应版本的ElasticSearch
-
配置调整:根据环境修改elasticsearch.yml
-
JVM调优:合理设置堆内存大小
-
服务启动:注意开发模式与生产模式区别
-
插件安装:根据需要安装分词器等插件
-
Kibana集成:安装可视化管理平台
10.2 环境区分建议
| 环境 | 配置建议 | 注意事项 |
|---|---|---|
| 开发环境 | discovery.type: single-nodexpack.security.enabled: false | 简化配置,快速启动 |
| 测试环境 | 最小集群配置 基础安全配置 | 模拟生产环境 |
| 生产环境 | 完整集群配置 严格安全配置 资源隔离 | 性能优化,高可用 |
10.3 故障排查清单
-
无法启动:检查JVM参数、文件权限、端口占用
-
节点无法加入集群:检查网络、集群名称、发现配置
-
内存不足:调整JVM堆大小,检查系统内存
-
磁盘空间不足:清理旧索引,扩容磁盘
-
查询性能慢:优化索引设计,调整分片数
10.4 后续学习建议
-
掌握基本操作:索引创建、文档CRUD、搜索查询
-
理解核心概念:分片、副本、映射、分析器
-
学习DSL语法:掌握复杂查询和聚合分析
-
探索高级特性:集群监控、性能调优、安全配置
-
集成实践:与Spring Boot等框架集成开发
资源链接:
更多推荐
所有评论(0)