Rails上的Elasticsearch Service(AWS) - 超时

时间:2016-03-14 20:39:47

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

[更新]我只是为这种情况添加当前端点(几天)

我使用ElasticSearch和Rails,我使用这个宝石: - elasticsearch-rails - elasticsearch-model

当我在我的开发(我的电脑)中运行elasticsearch时,我的设置没问题。但是当我使用Elasticsearch的端点时,AWS会在我的rails应用程序中显示此消息:

  

"法拉第:: TimeoutError:连接超时 - 连接为   search-production-shipit-45cu5wkligv2ythnfozcnthsoi.us-east-1.es.amazonaws.com port 9200"

我在初始化程序中添加了这个文件:elasticsearch.rb

Elasticsearch::Model.client = Elasticsearch::Client.new host: "search-production-shipit-45cu5wkligv2ythnfozcnthsoi.us-east-1.es.amazonaws.com"

当我输入我的端点时显示elasticsearch信息确定。

这是我在Amazon Elasticsearch中的政策(任何人都可以为此示例连接)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-east-1:090358380644:domain/production-shipit/*"
    }
  ]
} 

另一方面,当我执行此命令时:

curl -XGET 'search-production-shipit-45cu5wkligv2ythnfozcnthsoi.us-east-1.es.amazonaws.com' 

端点返回:

{
  "status" : 200,
  "name" : "Meld",
  "cluster_name" : "090358380644:production-shipit",
  "version" : {
    "number" : "1.5.2",
    "build_hash" : "62ff9868b4c8a0c45860bebb259e21980778ab1c",
    "build_timestamp" : "2015-04-27T09:21:06Z",
    "build_snapshot" : false,
    "lucene_version" : "4.10.4"
  },
  "tagline" : "You Know, for Search"
}

1 个答案:

答案 0 :(得分:3)

亚马逊托管的elasticsearch将默认端口从9200更改为默认的http / https端口(80和443) - 请注意您的curl命令如何指定端口

另一方面,elasticsearch ruby​​库假设elasticsearch默认值为9200.您可以通过指定URL(使用url选项)或使用

指定端口
Elasticsearch::Client.new hosts: [
  { host: 'some-host',
    port: '443',
    scheme: 'https'
  } ]