【问题标题】:Rails app on AWS can't access the ElasticSearch service but Rails console canAWS 上的 Rails 应用程序无法访问 ElasticSearch 服务,但 Rails 控制台可以
【发布时间】:2019-01-01 16:06:43
【问题描述】:

我有一个在 AWS 上运行的 Rails 应用程序,并决定将 Amazon ElasticSearch (AES) 添加到该应用程序中。如果我转到控制台并创建索引并运行搜索,我就能让它正确运行。但是,如果我尝试从应用程序运行(通过转到浏览器并在浏览器上运行页面),在控制台上运行的相同搜索将失败并在日志中提供以下错误:

Started GET "/customers/search" for 168.0.184.214 at 2018-07-24 18:31:04 -0400
Processing by CustomersController#search as HTML
^[[1m^[[36mUser Load (1.8ms)^[[0m  ^[[1m^[[34mSELECT  "users".* FROM "users"   WHERE "users"."deleted_at" IS NULL AND "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2^[[0m  [["id", 30], ["LIMIT", 1]]
Completed 500 Internal Server Error in 40ms (ActiveRecord: 12.2ms)

Elasticsearch::Transport::Transport::Errors::NotFound ([404] <html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.12.0</center>
</body>
</html>
):

app/controllers/customers_controller.rb:8:in `map'
app/controllers/customers_controller.rb:8:in `search'

在控制器上导致该错误的代码是这个:

 class CustomersController < ApplicationController
   def search
     @page = params[:page] || 1
     @per_page = params[:per_page] || 10
     s = Customer.custom_search({first_name:'Paul'}).results.map(&:first_name)

   end
 end

现在,如果我从控制台运行该搜索,一切正常。

该应用程序位于 nginx+Puma 服务器后面。

我的配置文件 config/initializers/elasticsearch.rb 看起来像这样

 config = {
   host: "https://vpc-t2-es-i5qqpdv4k4pvq3smnj3nc46f74.us-east-1.es.amazonaws.com/",
   transport_options: {
     request: { timeout: 10000 }
   }
 }

 Elasticsearch::Model.client = Elasticsearch::Client.new(config)

而nginx的配置文件是:https://jpst.it/1jZl4

是否有人对可能出现的问题提出任何建议?

【问题讨论】:

  • 我忘了说我正在使用宝石:elasticsearch-model 和 elasticsearch-rails
  • 只是在黑暗中拍摄。难道rails c 运行在开发模式,rails s 运行生产?
  • @DennyMueller 我试过了,但它适用于控制台上的任何环境(rails c)

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


【解决方案1】:

好吧,这个问题比我想象的还要容易。

问题是 Nginx 正在与 Puma 一起工作,并且重新启动 Nginx 不会重新启动 Puma 进程,因此我尝试的任何更改都没有应用于正在运行的应用程序。这就是为什么它在控制台而不是实际应用程序上工作的原因

基本上重启 Puma 解决了这个问题。是的,听起来很愚蠢:)

【讨论】:

    猜你喜欢
    • 2016-09-10
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 2014-10-31
    • 1970-01-01
    相关资源
    最近更新 更多