如何在Windows笔记本上同时运行ES 1.7.5与ES 8.9.0(非Docker方式)
在Windows本地同时运行Elasticsearch 1.7.5和8.9.0的解决方案
核心解决思路
ES 1.7.5依赖JDK 8(或更低版本),ES 8.9.0自带JDK 17,同时启动时会因系统全局JDK环境冲突报错。核心解决方式是给两个版本指定独立的JDK运行环境,同时修改端口避免资源占用冲突。
1. 准备对应版本的JDK
- ES 1.7.5:下载并解压适配的JDK 8(OpenJDK或Oracle JDK均可)到独立目录,比如
D:\jdk8 - ES 8.9.0:无需额外下载JDK,它自带的JDK 17位于安装目录的
jdk子文件夹中
2. 为每个ES版本配置专属JDK
针对ES 1.7.5
打开安装目录下的bin\elasticsearch.bat,在文件最开头添加以下命令,强制该实例使用指定的JDK 8:
set JAVA_HOME=D:\jdk8 set PATH=%JAVA_HOME%\bin;%PATH%
针对ES 8.9.0
它默认会自动使用自带的JDK 17,无需额外配置。若出现识别问题,可打开bin\elasticsearch.bat,在开头添加:
set JAVA_HOME=D:\elasticsearch-8.9.0\jdk set PATH=%JAVA_HOME%\bin;%PATH%
(路径替换为你的ES 8.9.0实际安装目录)
3. 修改端口避免冲突
两个ES实例默认端口相同,需修改其中一个的端口:
修改ES 1.7.5的端口
打开config\elasticsearch.yml,修改以下配置项:
http.port: 9201 transport.tcp.port: 9301
(可选)修改ES 8.9.0的端口
若需要,同样编辑config\elasticsearch.yml:
http.port: 9202 transport.tcp.port: 9302
4. 启动并验证
- 先双击运行ES 1.7.5的
elasticsearch.bat,待控制台输出启动完成的日志后,再启动ES 8.9.0的elasticsearch.bat - 验证:分别访问
http://localhost:9201(ES 1.7.5)和http://localhost:9200(ES 8.9.0),能返回对应版本的JSON响应即成功
额外注意事项
- 两个ES实例的
data和logs目录必须独立,禁止共用,防止数据损坏或日志混乱 - ES 8.9.0默认开启安全验证(HTTPS、账号密码),开发阶段可关闭以简化操作:编辑
config\elasticsearch.yml,添加/修改:xpack.security.enabled: false xpack.security.enrollment.enabled: false xpack.security.http.ssl.enabled: false xpack.security.transport.ssl.enabled: false
内容的提问来源于stack exchange,提问作者Pratyush Dhanuka
相关产品推荐
相关产品推荐

