InfoGrab DocsInfoGrab Docs

고급 검색 마이그레이션 스타일 가이드

GitLab 고급 검색(Advanced Search) 마이그레이션을 작성, 실행, 정리하는 방법과 사용 가능한 헬퍼 및 모범 사례를 설명합니다.

새 고급 검색 마이그레이션 만들기 # 이 기능은 GitLab 13.0 이상에서 생성된 인덱스에서만 지원됩니다. 스크립트로 만들기 # 히스토리 GitLab 16.3에서 도입됨 . scripts/elastic-migration 을 실행하고 프롬프트에 따라 다음을 생성합니다: 마이그레이션을 정의하는 마이그레이션 파일: ee/elastic/migrate/YYYYMMDDHHMMSS_migration_name.rb 마이그레이션을 테스트하는 스펙 파일: ee/spec/elastic/migrate/YYYYMMDDHHMMSS_migration_name_spec.rb 마이그레이션을 식별하는 딕셔너리 파일: ee/elastic/docs/YYYYMMDDHHMMSS_migration_name.yml 수동으로 만들기 # 히스토리 GitLab 13.6에서 도입됨 . ee/elastic/migrate/ 폴더에 파일명 형식 YYYYMMDDHHMMSS_migration_name.rb 으로 새 파일을 만드세요. 이 형식은 Rails 데이터베이스 마이그레이션과 동일합니다. # frozen_string_literal: true class MigrationName < Elastic::Migration # Important: Any updates to the Elastic index mappings must be replicated in the respective # configuration files: # - `Elastic::Latest::Config`, for the main index. # - `Elastic::Latest::Config`, for standalone indices. def migrate end # Check if the migration has completed # Return true if completed, otherwise return false def completed? end end 적용된 마이그레이션은 gitlab-#{RAILS_ENV}-migrations 인덱스에 저장됩니다. 실행되지 않은 모든 마이그레이션은 Elastic::MigrationWorker cron worker에 의해 순차적으로 적용됩니다. Elastic 인덱스 매핑을 업데이트하려면 각 파일에 설정을 적용합니다: 메인 인덱스의 경우: Elastic::Latest::Config . 독립 인덱스의 경우: Elastic::Latest::Config . 마이그레이션은 재시도 횟수 제한을 설정할 수 있으며 실패 처리 및 중단 표시 가 가능합니다. 마이그레이션 재시도를 지원하기 위해 필요한 데이터 또는 인덱스 정리는 마이그레이션 내에서 처리해야 합니다. 건너뛴 마이그레이션 # true 또는 false 로 평가되는 skip_if proc를 추가하여 마이그레이션을 건너뛸 수 있습니다: class MigrationName < Elastic::Migration skip_if ->() { true|false } 마이그레이션은 조건이 false 인 경우에만 실행됩니다. 건너뛴 마이