2013-08-21 5 views
0

내가 내 데이터를 가져올 mysqlriver을 사용하고 레이크에게타이어는 타이어없이 사용자 이름을 사용하여 인덱스를 만들 : 수입

을 사용하고이 답변, Update ElasticSearch mapping in production (Tire), 새 인덱스 이름으로 가져올 수있는 주요 방법을 살펴보면 (거기 그것의 제비, 나는 통제를 좋아한다). 루비 모델을 타이어 설정으로 처음로드하면 인덱스가 자동으로 생성됩니다. 인덱스 이름은 어떻게 변경합니까?

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을 참조하십시오.

타이어가 이미있을 때 색인을 만들려고하지 않으므로 색인을 만들 때 데이터를로드하고 앱을 시작하면 모든 것이 제자리에 고정되어야합니다.

또한 더욱 편리하고 투명한 관리를 위해 인덱스 별칭에 대한 Elasticsearch의 지원을 사용할 수도 있습니다. 타이어의 API : 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

@ karmi의 답변에 덧붙여 라. index_name 'my-custom-name'을 사용하십시오. 나는 이런 이유로 오류에 직면했다.