后面做了优化,修改源码,建议采用优化后的方法
1、修改本地es连接配置(源码示例容易误导,看源码读取配置后才正确配置):
2、修改protocol设置,yii2中es连接之前会获取所有的可连接es集群,因为es不存在protocol属性,源码中手动设置为http,这个地方作者考虑补全,没有采用本地配置的protocol,因此要修正:
3、修改curl请求的证书认证,增加三个opt选项,CURLOPT_SSL_VERIFYPEER=true,设置为要验证证书,CURLOPT_SSL_VERIFYHOST=false,设置为不验证证书hostname是否一致,CURLOPT_CAINFO配置证书的路径:
注意:在es中的官网中提及,如果返回空回应,则说明es的认证配置成功。如果取不到数据,那么就需要考虑其他问题了,比如第2步中修改protocol为https才能拿到数据。
优化:
1、修改后的main-local.php配置。上面第2步中修改protocol设置,其实是自以为找到了源码作者疏忽的地方,其实更简便的办法是修改组件配置的defaultProtocol为https,就像下面配置中那样。
2、当然,把protocol设置为https后,大家肯定是希望使用ssl加密访问了。那下面就以它为参考,在源码中增加ssl的扩展配置。
- 新增一个组件配置sslExtension,并让他与其他配置一起生效
- 修改配置项
3、测试通过,结果与未优化之前是一样的。