我正在尝试让 FOSElasticaBundle 在 AWS ElasticSearch 上工作。目前,我的开发环境已全部设置完毕,并且使用 Docker 容器进行 ElasticSearch 完美运行
FROM docker.elastic.co/elasticsearch/elasticsearch-oss:6.2.4
如果我使用以下方法填充我的 ElasticSearch:
docker-compose exec php php /var/www/symfony/bin/console fos:elastica:populate --env=prod
这一切都完美无缺,索引中有可搜索的项目。
然而,将其转移到 AWS 会引发一个问题。
我已经使用他们的 VPN 选项在 AWS 中设置了 ElasticSearch 服务(v6.2),我能够连接到这个(我知道它确实连接,因为我有连接错误,直到我在配置中使用它:
fos_elastica:
clients:
default:
transport: 'AwsAuthV4'
aws_access_key_id: '%amazon.s3.key%'
aws_secret_access_key: '%amazon.s3.secret%'
aws_region: '%amazon.s3.region%'
当我跑
php bin/console fos:elastica:populate --env=prod
看起来它正在填充
3200/6865 [=============>--------------] 46% 4 secs/9 secs
Populating ppc/keywords
Refreshing ppc
但是一旦完成,我的亚马逊控制台会显示 0 个可搜索文档,如果运行查询,我将一无所获。
有没有人遇到过这个问题以及如何解决它,即使能够从 populate 获得更多反馈也能帮助我找出问题所在。
编辑 17:29 31/5
因此,我在标准 EC2 实例上的 docker 容器中创建了一个 Elasticsearch 安装并指向它,它完美地索引,所以它与与 AWS 的连接有关。它们之间的区别之一是 Docker 安装不必使用:
transport: 'AwsAuthV4'
aws_access_key_id: '%amazon.s3.key%'
aws_secret_access_key: '%amazon.s3.secret%'
aws_region: '%amazon.s3.region%'
我想这与此有关,我会想如果它没有被授权,虽然我会得到一个错误。虽然它目前正在运行,但我更喜欢使用亚马逊服务,这样我就需要花很多时间来关注它!