2015-03-01 5 views
6

У меня есть сообщение модель:Rails - ElasticSearch - несколько индексов в одной модели

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 

У меня есть одна модель, 2 очень разные функции, которые нуждаются в совершенно иной индекс.

Как я могу построить 2 разных индекса в 1 модели и сообщить __elasticsearch__.search, какой индекс он должен использовать?

ответ

0

Вы знаете, что можете использовать 2 модели для той же таблицы базы данных справа? Я бы упомянул об общих методах и одной модели для индекса, или о трех моделях, для регулярного использования, и о двух других специально для индексов. Сначала это может показаться хакером, но в конце концов это может быть более чистым решением. Дайте мне знать, как это происходит: p

Смежные вопросы