Как использовать Elasticsearch на Heroku
Я только что закончил смотреть оба эпизода Railscasts на Elasticsearch. Я также пошел вперед и реализовал его в своем приложении rails (3.1), и все работает отлично. Как я хочу развернуть свое приложение в Heroku, но я не уверен, как заставить Elasticsearch работать на здесь (в частности, на кедровом стеке).
любая помощь была бы очень признательна!
5 ответов
Heroku теперь поддерживает ElasticSearch с бонсай добавить. https://devcenter.heroku.com/articles/bonsai
вы можете очень легко [и свободно ;-)] свернуть свой собственный сервер ElasticSearch на Amazon EC2 и просто подключиться к нему с помощью приложения. Это то, что мы делаем, и это работает прекрасно...
http://www.elasticsearch.org/tutorials/elasticsearch-on-ec2/
Я создал модуль Play framework, который будет запускать эластичный поиск на Heroku с помощью S3 для сохранения состояния. Нет необходимости в экземпляре EC2 - вы платите только за стоимость данных S3, которая намного меньше-в основном транзакции ввода-вывода. Он использует шлюз ElasticSearch S3 (механизм сохранения).
вы можете использовать его либо путем расширения приложения Play для создания определенных конечных точек для ваших функций поиска, Либо, если хотите, вы можете получить доступ к Elasticsearch REST API напрямую (по умолчанию выставляет его на маршруте http://yourapp.com/es). Существует очень простая система аутентификации, чтобы защитить его.
единственным недостатком этой установки является то, что dyno может занять некоторое время, чтобы развернуться. Таким образом, это не будет работать хорошо, если вы позволите dyno вращаться от бездействия - и вы можете получить гвозди для сборов за передачу данных S3, если это произойдет много, и ваш индекс огромен. Плюс в том, что вы контролируете свои собственные данные, и это дешево дешево дешево. Еще одно предупреждение - вы будете нужно быть осторожным, чтобы держать внутри границ памяти Heroku dyno. Тем не менее, у нас были функции автозаполнения полнотекстового поиска, работающие на нескольких индексах без проблем.
вы можете создать аналогичный модуль в Rails, используя JRuby для разговора с API Java ElasticSearch. Моим главным вкладом здесь было выяснить, как запустить его в другой веб - фреймворк-поскольку Play также использует Netty, было довольно легко встроить его. Эксплуатационные испытания по сравнению с EC2 cluster + Tire (Rails gem для ElasticSearch) показал, что подход Heroku/Play выполнял более быстрые поиски.
проект здесь:https://github.com/carchrae/elastic-play - я был бы рад помочь людям настроить его - это должно быть довольно безболезненно.
Это была моя первая мысль, когда я смотрел RailsCast, но, к сожалению, это Java-демон, который работает так, как это невозможно на Heroku.
в любом случае вы не можете запустить его на обычном Heroku dyno, так как ему придется сохранять данные на диск, который не сохраняется на Heroku. Вам нужно дождаться дополнения или разместить его в другом месте.