2015-03-01 11 views
6

Mam modelu postu:Rails - ElasticSearch - Wiele indeksów w jednym modelu

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 

mam 1 Model 2 bardzo różne funkcje, które wymagają zupełnie innego indeksu.

Jak mogę zbudować 2 różne indeksy w 1 modelu i powiedzieć, który indeks powinien użyć?

Odpowiedz

0

Wiesz, że możesz użyć dwóch modeli dla tej samej tabeli bazy danych, prawda? Chciałbym użyć troski o wspólne metody i jeden model na indeks, ten lub 3 modele, jeden do regularnego użytku i 2 inne specjalnie do indeksów. Na początku może się wydawać, że to hack, ale w końcu może to być czystsze rozwiązanie. Daj mi znać, jak to działa: p

Powiązane problemy