[更新]我只是为这种情况添加当前端点(几天)
我使用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"
}
答案 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'
} ]