Elasticsearchの公式PHPライブラリであるところのelasticsearch/elasticsearchを使ってAWSのVPC内にあるElasticsearchServiceに接続しようとする。
$builder = \Elasticsearch\ClientBuilder::create();
$builder->setHosts(['https://xxxxxx.xxxxx.es.amazonaws.com/']);
$client = $builder->build();
$client->ping();
何の問題もない完璧なるパーフェクトなコードに見えるけど、全く繋がらない。
弊社のElasticserachマスターに聞いたら以下が正解とのこと。
$builder = \Elasticsearch\ClientBuilder::create();
$builder->setHosts(['https://xxxxxx.xxxxx.es.amazonaws.com:443']);
$client = $builder->build();
$client->ping();
Hostの末尾の /
を削除して :443
とポートを明示的に指定すると動く。
HTTPSだからってポートが自動的に443になると思うのはゆとり
助かった