我正在为我的Rails api设置Elasticsearch。对于初学者,我在本地设置了Elasticsearch,并且使用elasticsearch gem对我的数据库进行索引和搜索没有任何问题
接下来,我想使用亚马逊网络服务的ElasticsearchService。我已经按照this guide在亚马逊网络服务控制台中设置了服务和域名。
对于我的生活,我想不出如何去连接它。我有一个AWS elasticsearch url,正在尝试点击它,如下所示:
require 'faraday_middleware/aws_signers_v4'
Elasticsearch::Model.client = Elasticsearch::Client.new url: 'https://search-my-cluster-abc123....es.amazonaws.com' do |f|
f.request :aws_signers_v4,
credentials: Aws::Credentials.new(ENV['AWS_ACCESS_KEY'], ENV['AWS_SECRET_ACCESS_KEY']),
service_name: 'es',
region: 'us-east-1'
end我直接从elastic的github页面here中采取了这种方法。然而,我似乎无法连接。
[1] pry(main)> Elasticsearch::Model.client.cluster.health
Faraday::ConnectionFailed: execution expired我还查看了Amazon Elasticsearch SDK,但它似乎只用于设置域,而不是执行实际的搜索。
感谢您的帮助,谢谢。
发布于 2016-11-22 01:40:15
在我问了这个问题后不久,我在searchkik github上找到了答案。
https://github.com/ankane/searchkick/issues/566
确保在您的elasticsearch url前面加上http://
发布于 2020-03-10 15:26:19
我也有同样的问题,但是我使用了新的faraday_middleware-aws-sigv4 gem。我发现我仍然可以使用https,但我需要在URL的末尾添加443端口:
require 'elasticsearch'
require 'faraday_middleware/aws_sigv4'
Elasticsearch::Model.client = Elasticsearch::Client.new(url: 'https://search-my_elasticsearch_service.ap-southeast-2.es.amazonaws.com:443']) do |f|
f.request :aws_sigv4,
service: 'es',
region: 'ap-southeast-2',
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
endhttps://stackoverflow.com/questions/40725992
复制相似问题