2013-08-21 1 views
0

Глядя на этот ответ, Update ElasticSearch mapping in production (Tire), главным образом импортировать в новое имя индекса использует граблиTire создать индекс, используя пользовательское имя без шины: импорт

Я использую mysqlriver импортировать свои данные (есть много, и мне нравится контроль). Когда я сначала загружаю свою рубиновую модель с настройками шины, она автоматически создает индекс. Как изменить имя индекса, которое оно использует?

class Tag 
    include Tire::Model::Search 
    mapping do 
     indexes :id, :index => :not_analyzed 
     indexes :name, :analyzer => 'snowball' 
    end 

    after_destroy { self.index.remove(self) rescue nil } 
    after_save { reindex_dirty %w(name deleted) } 
    end 

Моя цель состоит в том, чтобы он создать индекс с именем «tag_version_1», так что я могу создать псевдоним и имеют 0-простои изменения индекса.

ответ

1

Просто используйте метод index_name "my-custom-name" в вашей модели; см. пример https://github.com/karmi/tire/blob/master/test/models/active_model_article_with_custom_index_name.rb.

Шина не будет пытаться создать индекс, если он уже существует, поэтому, создав индекс, загрузите данные, запустите приложение, все должно защелкнуться на месте.

Кроме того, вы можете использовать поддержку Elasticearch для псевдонимов индексов для более удобного и прозрачного управления. См. API Tire: https://github.com/karmi/tire/blob/master/test/integration/index_aliases_test.rb и документация: http://www.elasticsearch.org/guide/reference/api/admin-indices-aliases/

+0

Хм, это не совсем похоже на работу - так как мне нужно, чтобы шина «создавала» имя версии, но «читала» из псевдонима (так что, когда я изменяю псевдоним, он все равно будет работать) , Я играю со сценарием, который вызывает «Tire :: Model :: Search.index_prefix» v # {version} "" перед загрузкой моего модуля, который кажется сложным, но работает – Kevin

0

Добавляем к ответу @ карми. Используйте index_name 'my-custom-name'. Я столкнулся с ошибками по этой причине.