Как использовать Elasticsearch на Heroku - PullRequest
10 голосов
/ 14 декабря 2011

Я только что закончил смотреть оба эпизода Railscasts на Elasticsearch .Я также реализовал это в своем приложении rails (3.1), и все работает отлично.Как я хочу развернуть свое приложение на Heroku, но я не уверен, как заставить Elasticsearch работать на Heroku (особенно на стеке кедра)

Любая помощь будет принята с благодарностью!

Ответы [ 5 ]

11 голосов
/ 22 декабря 2011

Вы можете очень легко [и свободно ;-)] развернуть свой собственный сервер ElasticSearch на Amazon EC2 и просто подключиться к нему с помощью своего приложения.Это то, что мы делаем, и это прекрасно работает ...

http://www.elasticsearch.org/tutorials/elasticsearch-on-ec2/

10 голосов
/ 19 марта 2012

Heroku теперь поддерживает ElasticSearch с добавлением бонсай. https://devcenter.heroku.com/articles/bonsai

2 голосов
/ 05 ноября 2012

Я создал модуль Play Framework, который будет запускать Elastic Search на Heroku, используя S3 для сохранения состояния. Нет необходимости в экземпляре EC2 - вы платите только за стоимость данных S3, которая намного меньше, в основном за транзакции ввода-вывода. Он использует шлюз ElasticSearch S3 (механизм персистентности).

Вы можете использовать его, либо расширив приложение Play для создания конкретных конечных точек для своих функций поиска, либо, если хотите, вы можете напрямую получить доступ к API-интерфейсу REST ElasticSearch (по умолчанию он предоставляет его по маршруту http://yourapp.com/es). Там это очень простая система аутентификации для ее защиты.

Единственным недостатком этой настройки является то, что динамометру может потребоваться некоторое время, чтобы раскрутиться. Таким образом, это не будет хорошо работать, если вы позволите динамометрическому устройству замедляться из-за неактивности - и вы можете получить штраф за передачу данных S3, если это часто случается и ваш индекс огромен. Плюс в том, что вы контролируете свои собственные данные, и это дешево дешево дешево. Еще одно предупреждение - вам нужно быть осторожным, чтобы не выходить за пределы памяти династии Героку. Тем не менее, у нас были функции автозаполнения полнотекстового поиска, работающие с несколькими индексами без проблем.

Возможно, вы сможете собрать аналогичный модуль в Rails, используя JRuby для взаимодействия с API-интерфейсом ElasticSearch Java. Мой основной вклад здесь заключался в том, чтобы выяснить, как запустить его в другом веб-фреймворке - поскольку Play также использует Netty, его было довольно легко внедрить. Тесты производительности по сравнению с кластером EC2 + Tire (гем Rails для ElasticSearch) показали, что подход Heroku / Play выполнял более быстрые поиски.

Проект находится здесь: https://github.com/carchrae/elastic-play - Я был бы рад помочь людям настроить его - он должен быть довольно безболезненным.

0 голосов
/ 15 декабря 2011

В любом случае вы не можете запустить его на обычном Heroku Dyno, так как он должен был бы сохранять данные на диск, который не сохранен в Heroku. Вам нужно дождаться добавления или разместить его где-то еще.

0 голосов
/ 14 декабря 2011

Это была моя первая мысль, когда я смотрел RailsCast, но, к сожалению, это демон Java, который работает так, как это невозможно на Heroku.

...