Ruby on Rails bez databazy a Elasticsearch ako zdroj dat rubrika: Programování: Ruby

4 havran
položil/-a 4.3.2015

Ako dlhorocny PHP programator som zacal s Ruby / Ruby on Rails tak napriek mnozstvu zdrojov stale neviem uchopit podstatu...

Mojim cielom je v Ruby on Rails aplikacii poslat dotaz na Elasticsearch a vysledok zobrazit v tabulke. V plain Ruby som napisal

require 'elasticsearch'
require 'multi_json'
 
client = Elasticsearch::Client.new host: 'http://myhost:9200'
#client.cluster.health
#client.transport.reload_connections!
result = client.search index: 'cbr', 
                       body: {
                         query: { 
                           match: { 
                             pfi: 'SNP' 
                           }
                         }
                       }  
 
 
 
puts MultiJson.dump(result, pretty: "true")

co bez problemov vratilo JSON s vysledkami.

V RoR sa mi nedari prijst na to ako zakomponovat tento kod do controlleru. Co sa tyka gemu elasticsearch-rails tak pokial som spravne pochopil ten sa primarne stara o rozsirenie funkcnosti modelu o indexovanie a vyhladavanie v datach. Ja ale lokalnu databazu nepotrebujem - cela aplikacia ktoru chcem postavit bude citat data z externych zdrojov (Elasticsearch) a RoR ma sluzit len na ich zobrazovanie (primarne cez JS generovane grafy).

Zatial sa mi nepodarilo narazit na priklad ktory by popisoval podobne vyuzitie (az na tento zdroj http://stackoverflow.com/questions/23024181/rails-4-model-with-no-table). Aky je spravny postup ak potrebujem pracovat z datami takymto sposobom? Vedel by ma niekto naviest co potrebujem na to aby som urobil jednoduchy dotaz do Elasticsearch v RoR?

Vopred dakujem za kazdu radu ci zdroj.

--- upravene 14:17

No v kazdom pripade som zistil ze takto mi to uz funguje.

class ReportsController < ApplicationController
  def report_1
    client = Elasticsearch::Client.new host: 'http://myhost:9200'
    data = client.search index: 'cbr', body: {
      query: {
        match: { 
          pfi: 'SNP' 
        }
      }
    }
    # ... tu spracujeme data
  end
end

Elasticsearch sa neda pouzit ako databaza (chyba connection adapter). Neexistuje lepsi sposob ako si parsovat vrateny JSON a upravovat si ho?

Komentáře

  • havran : Aha robil som jednu zakladnu chybu - po pridani noveho gemu je potrebne restartnut server. Hmm mozno samozrejmost ale nikde som na to nenarazil - takze ta basic query v controlleri mi uz funguje. 4.3.2015

Pro plný přístup na Devel.cz se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.