核心内容摘要
如何让你的B站缓存视频真正“为你所有“?视频格式转换的实用指南
Elasticsearch简称ES作为一款高性能的分布式全文搜索引擎在日志分析、全文检索、数据可视化等场景中应用广泛。
对于后端、运维及大数据开发者而言熟练掌握ES的启动流程含环境准备、安装配置、启停命令、异常处理是入门必备技能。
本文将从零基础视角出发手把手教你完成ES的完整启动覆盖Windows、Linux双系统场景同时梳理高频坑点与解决方案适合新手直接上手实操。
前置知识ES启动核心前提在启动ES前必须先明确其运行依赖与环境要求否则会出现启动失败、闪退等问题。
核心前提如下新手务必逐一核对
1 核心依赖JDK环境重中之重ES是基于Java开发的应用**JDK环境是必选依赖**且JDK版本与ES版本存在严格兼容关系版本不匹配会直接导致启动失败。
推荐对应关系如下官方权威适配Elasticsearch版本推荐JDK版本备注
x系列主流JDK 11推荐/ JDK 8兼容
8版本内置JDK可无需额外安装
x系列最新JDK 17推荐内置JDK默认启用
x及以下JDK 8不兼容高版本JDK需手动安装⚠️ 关键提醒如果使用ES
8版本建议直接使用内置JDK无需手动配置环境变量避免手动安装的JDK版本冲突低版本ES必须手动安装对应JDK并配置JAVA_HOME。
2 系统环境要求内存最低2GB推荐4GB及以上ES启动默认占用1GB堆内存内存不足会导致启动卡顿或失败。
操作系统支持Windows
LinuxCentOS
Ubuntu
18.
MacOS不支持Windows 7及以下老旧系统。
Linux特殊要求需关闭内存交换swappiness
调整文件描述符限制推荐
禁用SELinux否则会触发启动警告或失败。
3 版本选择建议新手推荐使用Elasticsearch
7.
x长期支持版LTS稳定性强、文档完善、社区资源丰富避免直接使用最新的
x版本部分配置与API有兼容性变更新手易踩坑。
双系统实操ES安装与启动全流程本节分别讲解Windows和Linux系统下ES的安装、配置与启动步骤所有操作均经过实测新手可按步骤复制执行。
1 Windows系统新手首选步骤1下载ES安装包访问ES官方下载地址https://www.elastic.co/cn/downloads/past-releases/elasticsearch-
选择“Windows”版本zip压缩包下载后解压至无中文、无空格的目录如D:\Program Files\elasticsearch-
7.
1
18。
⚠️ 避坑提醒解压目录严禁包含中文或空格如“D:\程序文件\es”会导致启动报错。
步骤2核心配置新手必改进入ES解压目录的config文件夹修改核心配置文件elasticsearch.yml用记事本或VS Code打开仅修改以下关键配置其余默认即可# 集群名称默认elasticsearch可自定义单机无需修改 cluster.name: my-es-cluster # 节点名称自定义区分不同节点 node.name: node-1 # 数据存储目录建议自定义避免默认目录被误删 path.data: D:\Program Files\elasticsearch-
7.
1
18\data # 日志存储目录同上 path.logs: D:\Program Files\elasticsearch-
7.
1
18\logs # 绑定地址
0.
0.
0允许外部访问单机测试也可设为
127.
0.
1 network.host:
0.
0.
0 # HTTP端口默认9200可修改避免端口冲突 http.port: 9200 # 初始主节点单机节点名称与node.name一致 cluster.initial_master_nodes: [node-1]补充配置可选解决跨域问题后续对接Kibana或前端时需配置# 允许跨域访问 http.cors.enabled: true # 允许所有来源跨域生产环境需指定具体域名 http.cors.allow-origin: *步骤3启动ES两种方式方式1命令行启动推荐便于查看日志打开Windows命令提示符CMD进入ES解压目录的bin文件夹如cd /d D:\Program Files\elasticsearch-
7.
1
18\bin。
执行启动命令elasticsearch.bat注意无后缀名的elasticsearch是Linux脚本Windows需执行.bat文件。
启动成功标志日志中出现“started”字样无ERROR级别的错误WARN警告可忽略多为配置优化提示。
方式2后台服务启动长期运行以管理员身份打开CMD进入bin目录执行命令安装服务elasticsearch-service.bat install。
启动服务elasticsearch-service.bat start停止服务命令elasticsearch-service.bat stop。
验证服务打开Windows服务列表找到“Elasticsearch
7.
1
18”状态为“正在运行”即为成功。
步骤4验证启动成功打开浏览器访问http://localhost:9200若修改了port则对应调整出现以下JSON响应即为启动成功{ name : node-1, cluster_name : my-es-cluster, cluster_uuid : XXXXXXXXXXXXXXXXXX, version : { number :
7.
1
18, build_flavor : default, build_type : zip, build_hash : XXXXXXXXXXXXXXXXXX, build_date :
T01:02:
4
861447208Z, build_snapshot : false, lucene_version :
8.
1
1, minimum_wire_compatibility_version :
6.
0, minimum_index_compatibility_version :
6.
0-beta1 }, tagline : You Know, for Search }
2 Linux系统生产环境常用以CentOS 7为例Ubuntu系统操作类似仅包管理命令不同apt替代yum。
步骤1前置环境配置必做Linux系统下需先优化系统参数否则ES启动会失败执行以下命令以root用户操作#
关闭内存交换临时生效重启后需重新设置 swapoff -a # 永久关闭修改/etc/fstab注释swap相关行用#开头 sed -i /swap/s/^/#/ /etc/fstab #
调整文件描述符限制临时永久 ulimit -n 65535 echo * soft nofile 65535 /etc/security/limits.conf echo * hard nofile 65535 /etc/security/limits.conf #
调整虚拟内存临时生效 sysctl -w vm.max_map_count262144 # 永久生效添加到/etc/sysctl.conf echo vm.max_map_count262144 /etc/sysctl.conf sysctl -p # 刷新配置 #
禁用SELinux临时永久 setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config步骤2下载并解压ES安装包# 进入安装目录自定义如/opt cd /opt # 下载ES
7.
1
18Linux x86_64版本 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-
7.
1
18-linux-x86_
tar.gz # 解压压缩包 tar -zxvf elasticsearch-
7.
1
18-linux-x86_
tar.gz # 重命名简化目录名 mv elasticsearch-
7.
1
18 es-
7.
1
18步骤3创建专用用户必做ES严禁使用root用户启动会直接报错需创建专用用户并授权# 创建用户用户名自定义如esuser useradd esuser # 授权ES目录权限 chown -R esuser:esuser /opt/es-
7.
1
18 # 切换到esuser用户 su - esuser步骤4修改配置文件进入config目录修改elasticsearch.yml配置项与Windows一致仅路径改为Linux格式cd /opt/es-
7.
1
18/config vi elasticsearch.yml# 核心配置 cluster.name: my-es-cluster node.name: node-1 path.data: /opt/es-
7.
1
18/data path.logs: /opt/es-
7.
1
18/logs network.host:
0.
0.
0 # 允许外部访问生产环境需谨慎建议指定内网IP http.port: 9200 cluster.initial_master_nodes: [node-1] # 跨域配置可选 http.cors.enabled: true http.cors.allow-origin: *步骤5启动ES两种方式方式1前台启动测试用便于查看日志# 进入bin目录 cd /opt/es-
7.
1
18/bin # 启动ES ./elasticsearch启动成功标志日志无ERROR出现“started”字样。
方式2后台启动生产环境常用# 后台启动-d参数表示后台运行 ./elasticsearch -d # 验证进程是否存在 ps -ef | grep elasticsearch步骤6验证启动成功# 本地验证Linux内部执行 curl http://localhost:9200 # 外部验证Windows浏览器访问Linux服务器IP:9200需开放9200端口 # 开放9200端口CentOS 7 firewall-cmd --zonepublic --add-port9200/tcp --permanent firewall-cmd --reload出现与Windows一致的JSON响应即为启动成功。
ES启停命令汇总快速查阅整理双系统下ES的启动、停止、重启命令便于日常操作
1 Windows系统# 命令行启动前台 elasticsearch.bat # 安装服务 elasticsearch-service.bat install # 启动服务后台 elasticsearch-service.bat start # 停止服务 elasticsearch-service.bat stop # 重启服务 elasticsearch-service.bat restart # 卸载服务 elasticsearch-service.bat remove
2 Linux系统esuser用户操作# 前台启动 /opt/es-
7.
1
18/bin/elasticsearch # 后台启动 /opt/es-
7.
1
18/bin/elasticsearch -d # 停止ES安全方式推荐 curl -X POST http://localhost:9200/_shutdown # 强制停止不推荐可能导致数据损坏 ps -ef | grep elasticsearch | grep -v grep | awk {print $2} | xargs kill -9⚠️ 提醒生产环境严禁使用kill -9强制停止ES会导致索引损坏、数据丢失优先使用/_shutdown接口安全停止ES
x需开启action.auto_create_index: .monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*配置。
高频启动失败问题与排坑指南新手必看新手启动ES时大概率会遇到以下问题按以下方案可快速解决
1 JDK版本不匹配/未找到JDK报错信息could not find java in JAVA_HOME or bundled JDK 或 Java version is
1.
0_202, but Elasticsearch requires Java 11解决方案若使用ES
8版本删除手动配置的JAVA_HOME环境变量使用ES内置JDKbin目录下有jdk文件夹。
若使用低版本ES安装对应版本的JDK配置JAVA_HOMEWindows计算机→属性→高级系统设置→环境变量Linux修改/etc/profile添加export JAVA_HOME/usr/local/jdk
1.
0_202source /etc/profile生效。
2 内存不足/堆内存设置过大报错信息Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408,
failed; errorCannot allocate memory (errno
解决方案修改ES堆内存配置config/jvm.options文件将-Xms和-Xmx改为系统可承受的值推荐为物理内存的1/4且不超过32GB# 原配置默认各1GB -Xms1g -Xmx1g # 修改后如2GB根据实际内存调整 -Xms2g -Xmx2g
3 Linux下用root用户启动报错信息can not run elasticsearch as root解决方案按
2.
3步骤创建专用用户如esuser切换到该用户后再启动ES确保ES目录权限属于该用户。
4 端口被占用报错信息BindTransportException[Failed to bind to [9200]]; nested: BindException[Address already in use]解决方案WindowsCMD执行netstat -ano | findstr 9200找到占用端口的进程ID在任务管理器中结束该进程或修改elasticsearch.yml中的http.port为其他未占用端口如9201。
Linux执行lsof -i:9200或netstat -anp | grep 9200找到占用进程并杀死kill -9 进程ID或修改端口。
5 跨域配置错误导致前端无法访问问题现象前端调用ES接口时出现“Access to XMLHttpRequest at http://xxx:9200/ from origin http://xxx has been blocked by CORS policy”错误。
解决方案确保elasticsearch.yml中跨域配置正确且无语法错误注意冒号后有空格http.cors.enabled: true http.cors.allow-origin: * # 若仍有问题添加以下配置 http.cors.allow-headers: Authorization,Content-Type修改后重启ES生效。
后续操作建议ES启动成功后可进行以下操作快速上手ES核心功能安装KibanaKibana是ES的可视化管理工具可用于索引管理、数据查询、监控ES集群版本需与ES一致
7.
1
18安装后启动并访问http://localhost:5601默认端口。
创建测试索引执行命令创建索引并添加数据验证ES功能# 创建索引index名称为test-indexcurl -X PUT http://localhost:9200/test-index# 添加数据id为1curl -X POST http://localhost:9200/test-index/_doc/1 -H Content-Type: application/json -d {name:ES启动教程,type:技术博客,create_time:
}# 查询数据curl -X GET http://localhost:9200/test-index/_doc/1学习核心API重点掌握索引CRUD、文档CRUD、全文检索等API可参考ES官方文档https://www.elastic.co/guide/en/elasticsearch/reference/
17/rest-apis.html。
六、
总结ES启动的核心在于“环境适配配置正确”新手只需按以下流程操作即可快速启动ES核对JDK版本→优化系统环境→修改核心配置→用正确用户/方式启动→验证启动状态。
本文覆盖了双系统实操、命令汇总、高频坑点解决方案适合零基础开发者入门。
需要注意的是生产环境中ES通常以集群模式部署多节点需额外配置节点通信、分片副本等参数后续可逐步深入学习。
如果在启动过程中遇到其他问题欢迎在评论区留言交流