10

Ho appena finito di guardare gli episodi di Railscast su Elasticsearch. Sono anche andato avanti e l'ho implementato nella mia applicazione rails (3.1) e tutto funziona alla grande. Come voglio distribuire la mia app su Heroku, ma non sono sicuro di come Elasticsearch funzioni su Heroku (in particolare su una pila di cedri).Come utilizzare Elasticsearch su Heroku

Qualsiasi aiuto sarebbe molto apprezzato!

risposta

10

Heroku ora supporta elasticsearch con il Bonsai add on. https://devcenter.heroku.com/articles/bonsai

+0

Davvero fantastico! Stavo aspettando che qualcuno uscisse con un componente aggiuntivo per questo. Dovrò provare e implementare questo –

+1

Ancora in versione beta pubblica al momento della stesura di questo documento; domande e feedback sono ben accetti! Colpiscimi tramite [@bonsaisearch] (http: // twitter.com/bonsaisearch) su Twitter, o [email protected] :-) –

+0

Questo è promettente! –

0

Questo è stato esattamente il mio primo pensiero quando ho guardato RailsCast ma sfortunatamente è un demone java che gira come non è possibile su Heroku.

+0

Beh, questo è piuttosto deprimente. Sembra che ElasticSearch sarebbe stata un'ottima alternativa a quello che sto usando ora (Solr/Sunspot). –

+1

probabilmente sarebbe valso la pena chiedere prima di implementare. Heroku non è esattamente un ambiente tradizionale :) –

0

In ogni caso non è possibile eseguirlo su un normale dyno Heroku poiché dovrebbe salvare i dati sul disco che non è persistente su Heroku. Devi aspettare un componente aggiuntivo o ospitarlo da qualche altra parte.

11

Puoi facilmente [e liberamente ;-)] caricare il tuo server ElasticSearch su Amazon EC2 e collegarti semplicemente con la tua app. Questo è quello che stiamo facendo, e sta funzionando bene ...

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

+0

ottima fonte - condivisione di thx 4 –

+3

Link obsoleto, non funziona più. – Micah

+0

[Ecco qui] (http://chrissimpson.co.uk/using-elasticsearch-on-amazon-ec2.html) un altro link a un Elasticsearch sul tutorial EC2. –

2

Ho creato un modulo Play Framework che eseguirà Elastic Search su Heroku utilizzando S3 per mantenere lo stato. Non c'è bisogno di un'istanza EC2 - si paga solo per il costo dei dati S3 che è molto meno - principalmente transazioni IO. Utilizza il gateway ElasticSearch S3 (meccanismo di persistenza).

È possibile utilizzarlo estendendo l'applicazione Play per creare endpoint specifici per le funzioni di ricerca oppure, se lo si desidera, è possibile accedere direttamente all'API REST di ElasticSearch (per impostazione predefinita lo espone sulla route http://yourapp.com/es). C'è un sistema di autenticazione molto semplice per proteggerlo.

L'unico svantaggio di questa configurazione è che il banco prova può impiegare un po 'di tempo per avviarsi. Quindi, non funzionerà bene se lasci che il dinamometro scorra dall'inattività - e potresti essere inchiodato per le tariffe di trasferimento dati S3 se ciò accade molto e il tuo indice è enorme. Il lato positivo è che controlli i tuoi dati ed è economico economico a buon mercato. Un altro avvertimento: dovrai stare attento a mantenere i limiti di memoria di un dyno Heroku. Detto questo, abbiamo avuto funzioni di completamento automatico della ricerca full text che lavorano su diversi indici senza problemi.

Potrebbe essere possibile creare un modulo simile in Rails utilizzando JRuby per parlare con l'API Java di ElasticSearch. Il mio principale contributo qui è stato capire come eseguirlo all'interno di un altro framework web - dal momento che Play utilizza anche Netty, è stato piuttosto semplice incorporarlo. I test delle prestazioni rispetto a un cluster EC2 + Tiro (Rails gem per ElasticSearch) hanno mostrato che l'approccio Heroku/Play eseguiva ricerche più veloci.

Il progetto è qui: https://github.com/carchrae/elastic-play - Sarei felice di aiutare le persone a installarlo - dovrebbe essere abbastanza indolore.