簡體   English   中英

使用Tire&Bonsai.io在Heroku上部署ElasticSearch

[英]Deployng ElasticSearch on Heroku with Tire & Bonsai.io

我正在嘗試安裝新的Bonsai ElasticSearch heroku附加組件,但是直到現在我都可以在本地開發機器上運行搜索,一旦部署在Heroku上,該搜索就會自動失敗,或者更好,Rails logger不會當我收到500 Internal Server Error時,請記錄任何內容。 這是查詢失敗期間的相關Heroku日志(未發現明顯錯誤): https : //gist.github.com/2867221

我正在尋找有關如何解決該問題的建議。 例如,我在Bonsai初始化程序config / initializers / bonsai.rb上設置Tire.configure { logger 'elasticsearch.log', :level => 'debug' } ,如下所示:

Tire.configure { logger 'elasticsearch.log', :level => 'debug' }
if ENV['BONSAI_INDEX_URL']
  Tire.configure do
    url "http://index.bonsai.io"
  end
  BONSAI_INDEX_NAME = ENV['BONSAI_INDEX_URL'][/[^\/]+$/]
else
  app_name = Rails.application.class.parent_name.underscore.dasherize
  app_env = Rails.env
  BONSAI_INDEX_NAME = "#{app_name}-#{app_env}"
end

但它會登錄一個文件,該文件適合本地使用,但部署后無法訪問。

Bonsai ElasticSearch是一個非常漂亮的新測試插件,所以我想知道你們中是否有人已經在Heroku上成功地嘗試過這種體驗,並且可以給我反饋和一些建議。

更新

設置logger logger $ stdout,:level =>'debug'到Tire.configure中,最后heroku可以在搜索失敗時記錄一些內容:

2012-06-04T21:36:26+00:00 heroku[router]: GET gitwatcher.com/categories?utf8=%E2%9C%93&query=Asynchronous+Web+Frameworks dyno=web.1 queue=0 wait=0ms service=32ms status=500 bytes=728
2012-06-04T21:36:26+00:00 heroku[nginx]: 93.34.212.216 - - [04/Jun/2012:21:36:26 +0000] "GET /categories?utf8=%E2%9C%93&query=Asynchronous+Web+Frameworks HTTP/1.1" 500 728 "http://gitwatcher.com/categories" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0) Gecko/20100101 Firefox/12.0" gitwatcher.com
2012-06-04T21:36:26+00:00 app[web.1]: # 2012-06-04 21:36:26:387 [_search] (["123456789"])
2012-06-04T21:36:26+00:00 app[web.1]: #
2012-06-04T21:36:26+00:00 app[web.1]: curl -X GET "http://index.bonsai.io/123456789/category/_search?load=true&pretty=true" -d '{"query":{"query_string":{"query":"Asynchronous Web Frameworks"}}}'
2012-06-04T21:36:26+00:00 app[web.1]:
2012-06-04T21:36:26+00:00 app[web.1]: # 2012-06-04 21:36:26:387 [200] (1 msec)
2012-06-04T21:36:26+00:00 app[web.1]:

...請參閱更多有關https://github.com/karmi/tire/issues/365的問題

僅出於跟蹤目的,我將在此報告(cat&past)我在GitHub Tire問題發布的分辨率:

DEFINETLY WORKS BY:
  1)  dropping out `to_indexed_json` from Category MongoID model ( at the opposit of README indication )
  2)  removing and re-adding Bonsai.io Heroku add-on
  3)  reindexing ElasticSearch by running `heroku run:detached rake environment tire:import CLASS='Category'`

...實際上,如果您只運行rake環境輪胎:import CLASS ='Category'FORCE = true,則由於Bonsai授權操作,它在Heroku / Bonsai.io上不起作用:

  2012-06-11T20:39:30+00:00 app[run.1]: curl -X DELETE http://index.bonsai.io/my-fake-index-11223344
  2012-06-11T20:39:30+00:00 app[run.1]: # 2012-06-11 20:39:30:749 [401]
  2012-06-11T20:39:30+00:00 app[run.1]: #
  2012-06-11T20:39:30+00:00 app[run.1]: # "{\"error\": \"Not authorized: Some endpoints are admin-only, ask support@onemorecloud.com.\"}\n"

而不是要重置/重新索引最終臟的數據,唯一的方法是刪除盆景插件並重新創建:

  heroku addons:remove bonsai:test
  heroku addons:add bonsai:test

也就是說,我確實有一個骯臟的數據,表示為:

  BSON::InvalidObjectId (illegal ObjectId format: LAm-hNglS5mbrMzDlVVHCQ):
  app/controllers/categories_controller.rb:25:in `index'

如果您需要完整的gem堆棧以與其他情況進行比較,則為: https : //gist.github.com/2912881

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM