【问题标题】:Using Amazons ElasticsearchService in a Rails application在 Rails 应用程序中使用 Amazon Elasticsearch Service
【发布时间】:2017-04-05 04:36:07
【问题描述】:

我正在为我的 Rails api 设置 Elasticsearch。 对于初学者,我在本地设置了 Elasticsearch,并且使用 elasticsearch gem 索引和搜索我的数据库没有问题

接下来,我想使用 AWS ElasticsearchService。我已经在 this guide 之后的 AWS 控制台中设置了服务和域。

对于我的生活,我无法弄清楚如何连接到它。 我有一个 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,但似乎该 SDK 仅用于设置域,而不是执行实际搜索。

感谢任何帮助,谢谢。

【问题讨论】:

    标签: ruby-on-rails amazon-web-services elasticsearch


    【解决方案1】:

    在我提出问题后不久,我就在 searchkik github 上找到了答案。

    https://github.com/ankane/searchkick/issues/566

    确保在您的弹性搜索网址前加上 http://

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,但使用了新的 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']
      end
      

      【讨论】:

        猜你喜欢
        • 2016-03-11
        • 1970-01-01
        • 2016-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-04
        相关资源
        最近更新 更多