2015-03-01 9 views
6

Ho un modello del messaggio:Rails - elasticsearch - indici multipli in un unico modello

class Post < ActiveRecord::Base 
    include Elasticsearch::Model 
    include Elasticsearch::Model::Callbacks 

    # I WANT THIS FUNCTION EXECUTED ON index1 
    def self.search1(query) 
     __elasticsearch__.search(
     { 
     query: 
     } 
    ) 
    end 

    # I WANT THIS FUNCTION EXECUTED ON index2 
    def self.search2(query) 
     __elasticsearch__.search(
     { 
     query: 
     } 
    ) 
    end 

    index_name "index1" 

    # I NEED ANOTHER INDEX ? HOW CAN I DO ? 
    settings index1: { number_of_shards: 1 } do 
    mappings dynamic: 'false' do 
     indexes :title, analyzer: 'english' 
    end 
    end 
end 

Post.__elasticsearch__.client.indices.delete index: "index1" rescue nil 
Post.__elasticsearch__.client.indices.create index: "index1", body: { settings: Post.settings.to_hash, mappings: Post.mappings.to_hash } 
Post.import 

ho 1 Modello, 2 funzioni molto diverse che hanno bisogno di un indice di completamente diverso.

Come posso creare 2 indici diversi in 1 modello e indicare allo __elasticsearch__.search quale indice deve essere utilizzato?

risposta

0

Sai che puoi utilizzare 2 modelli per la stessa tabella di database, giusto? Userei un problema per i metodi condivisi e un modello per indice, quello o 3 modelli, uno per l'uso regolare e gli altri 2 specificamente per gli indici. All'inizio potrebbe sembrare un trucco, ma alla fine potrebbe essere una soluzione più pulita. Fammi sapere come va: p

Problemi correlati