Edited at

AWS ElasticSearch ServiceのデータをPHPで取得する

More than 1 year has passed since last update.

ESデータがGETでフルオープンの場合の取得方法です。

ESのポリシーにIAM RoleのARN書きたいんじゃぁ〜って方はこちら=>IAM Roleを使ってAWS ElasticSearch ServiceのデータをLaravelで取得する


AWS側の設定

Amazon Elasticsearch Serviceポリシー例

外部からのGETのみ許可します。

{

"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "es:ESHttpGet",
"Resource": "arn:aws:es:ap-northeast-1:000000000000:domain/xxx/*"
}
]
}


ComposerでClientBuilderをインストール

ClientBuilderが必要なのでcomposer.jsonに追記します。


composer.json

"require": {

"elasticsearch/elasticsearch": "~6.0"
}

$ composer update

準備が整ったのであともう一歩です。


PHP側から読み込み


xxx.php

use Elasticsearch\ClientBuilder;

$hosts = [
'https://xxx.ap-northeast-1.es.amazonaws.com:443'
];

$client = ClientBuilder::create()->setHosts($hosts)->build();

$params = [
'index' => '*'
];

$response = $client->search($params);


$responseにデータ返ってきていると思います。

パラメーターの詳しい書き方はこちら

https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/_search_operations.html