安装Magento报错无法验证Elasticsearch连接该如何解决
Magento 2安装报Elasticsearch无存活节点错误修复方案
错误原因
Magento 2.4及以上版本硬依赖Elasticsearch/OpenSearch作为默认搜索引擎,你用XAMPP搭的本地环境没启动对应搜索服务,或者安装命令里的搜索连接参数配错了,就会出这个错。
修复方法
标准方案(生产/本地正式环境通用,推荐优先用)
- 先对应你装的Magento版本下载匹配的Elasticsearch:2.4.3到2.4.6适配Elasticsearch 7.x,2.4.4以上也可以用OpenSearch,新手别直接装Elasticsearch 8.x,默认开了SSL和密码认证,平白多一堆配置步骤。
- 下好Elasticsearch压缩包解压,进bin目录,Windows直接双击跑
elasticsearch.bat,Linux/macOS执行./elasticsearch启动,跑服务的窗口别关,关了服务就停了。 - 启动完浏览器打开
http://localhost:9200,能看到一段带版本号、集群名的JSON返回,就说明服务跑通了。 - 重新跑
php bin/magento setup:install的时候,把ES连接参数带上,下面是完整示例,把数据库名、密码这些换成你自己的配置就行:
php bin/magento setup:install \ --base-url=http://localhost/你的magento项目文件夹名 \ --db-host=localhost \ --db-name=你之前在PHPMyAdmin建好的数据库名 \ --db-user=root \ --db-password= #XAMPP默认root密码是空的,自己改过就填改后的密码 --admin-firstname=管 \ --admin-lastname=理员 \ --admin-email=你自己的邮箱 \ --admin-user=admin \ --admin-password=自定义后台密码(最少8位,要同时有字母和数字) \ --language=zh_Hans_CN \ --currency=CNY \ --timezone=Asia/Shanghai \ --use-rewrites=1 \ --search-engine=elasticsearch7 \ --elasticsearch-host=localhost \ --elasticsearch-port=9200 \ --elasticsearch-index-prefix=magento2 \ --elasticsearch-timeout=15
- 踩坑排查:要是ES确认启动了还报错,先打开XAMPP的
php.ini配置文件,找;extension=curl这行,把前面的分号删掉开启curl扩展,存完重启Apache再试。非要用Elasticsearch 8.x的话,安装命令里多补下面几行参数适配默认安全配置:
--elasticsearch-enable-auth=1 \ --elasticsearch-username=elastic \ --elasticsearch-password=装ES时设置的elastic账号密码 \ --elasticsearch-ssl-verify=0
本地测试临时绕过方案(仅限本地开发测试,绝对别用在生产)
要是只是本地搭个测试环境不想装ES,可以安装支持MySQL做搜索引擎的适配补丁,把默认搜索引擎换成MySQL就能跳过ES检查,不过会缺失不少搜索相关的高级功能,正式环境别这么搞。
内容的提问来源于stack exchange,提问作者Nicolas Gimelli
相关产品推荐
相关产品推荐

