为什么Tire在生产模式(RoR)中没有连接到ElasticSearch?

时间:2011-12-22 17:06:28

标签: ruby-on-rails search nginx elasticsearch tire

我有一个带有Ubuntu 10.04和Nginx的VPS以及一个通过capistrano部署到它的Rails应用程序。到目前为止,一切正常。昨天我试图整合Sunspot / Solr,这是一个彻底的灾难,因为它破坏了我的整个服务器和应用程序。 所以,今天我尝试使用Tire / ElasticSearch作为全文搜索的组合。在我当地的开发环境中,每件事都可以。我通过自制软件安装ES并启动并运行。经过一些测试后,我将应用程序部署到我的VPS并在此服务器上安装了ES。 当我启动ES它给我一个PID并且似乎工作正常,但问题是,看起来轮胎宝石无法连接到它或找到它。因为我无法保存将被索引的对象或在数据库中搜索某些内容。我总是收到消息(我自己将IP地址更改为0.0.0.0):

Started GET "/food?utf8=%E2%9C%93&query=hamburger" for 0.0.0.0 at 2011-12-22 16:43:07 +0100
Processing by PostsController#index as HTML
Parameters: {"utf8"=>"✓", "query"=>"hamburger"}
Completed 500 Internal Server Error in 11ms

Errno::ECONNREFUSED (Connection refused - connect(2)):
app/models/food.rb:23:in search'
app/controllers/food_controller.rb:12:inindex'

如果我尝试保存某些内容,则该消息几乎相同,只有发生错误的代码行不同。

我一直在寻找几个小时来找出错误的位置,如果我错过了配置中的某些内容或问题是什么,但我似乎无法找到它。 我一直在想这个问题 a)即使没有可设置的配置,轮胎也不知道如何找到ES b)IPTables或Nginx导致错误

而且我也无法打开my-domain.com:9200来访问ES,但这可能是由于Nginx。唯一的问题是,我找不到网络上有任何相同问题或共享方法的人。

我真的很感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

发现问题。在我的VPS上设置ES时,我设置了服务器的修复IP地址。根据指南,这应该是正确的,但在删除该行并让ES搜索它自己的设置后,它最终会起作用。