인덱스 내보내기 기능

개요

인덱스 내보내기 기능을 사용하면 OpenSearch에 색인된 검색 문서를 로컬 파일 시스템의 HTML 파일로 내보낼 수 있습니다. 이 기능은 다음과 같은 용도에 유용합니다:

  • 색인된 콘텐츠의 정적 백업 생성

  • 아카이브 목적의 문서 오프라인 복사본 생성

  • 정적 검색 결과 페이지 구축

  • 다른 시스템으로 콘텐츠 마이그레이션

내보낸 파일은 소스 문서의 원본 URL 경로 구조를 유지하므로 내보낸 콘텐츠를 쉽게 탐색하고 관리할 수 있습니다.

작동 방식

인덱스 내보내기 작업이 실행되면 다음 프로세스가 수행됩니다:

  1. 문서 쿼리: 효율적인 일괄 처리를 위해 스크롤 API를 사용하여 OpenSearch에서 문서 검색

  2. 콘텐츠 처리: 문서 필드(제목, 콘텐츠, URL 등) 추출

  3. 디렉토리 구조 생성: 내보내기 디렉토리에 URL 경로 구조 복제

  4. HTML 파일 생성: 문서 콘텐츠를 포함하는 HTML 파일 생성

  5. 완료될 때까지 계속: 인덱스가 완전히 내보내질 때까지 일괄 처리로 모든 문서 처리

스크롤 API는 메모리 문제 없이 대규모 문서 세트를 효율적으로 처리합니다.

설정 속성

``fess_config.properties``에서 인덱스 내보내기 기능을 설정합니다:

속성 기본값 설명
index.export.path /var/fess/export 내보낸 파일이 저장되는 디렉토리
index.export.exclude.fields cache 내보내기에서 제외할 필드의 쉼표로 구분된 목록
index.export.scroll.size 100 일괄 처리당 처리되는 문서 수

설정 예:

index.export.path=/data/fess/export
index.export.exclude.fields=cache,boost,role
index.export.scroll.size=200

작업 활성화

인덱스 내보내기 작업은 예약된 작업으로 등록되어 있지만 기본적으로 비활성화되어 있습니다.

작업을 활성화하려면:

  1. Fess 관리 콘솔에 로그인

  2. 시스템 > **스케줄러**로 이동

  3. 작업 목록에서 Index Export Job 찾기

  4. 클릭하여 작업 설정 편집

  5. cron 표현식을 사용하여 일정 설정

  6. 설정 저장

cron 표현식 예:

  • 0 0 2 * * ? - 매일 오전 2시에 실행

  • 0 0 3 ? * SUN - 매주 일요일 오전 3시에 실행

  • 0 0 0 1 * ? - 매월 1일 자정에 실행

사용자 정의 쿼리 필터링

작업 스크립트를 수정하여 특정 문서만 내보내도록 내보내기 작업을 사용자 정의할 수 있습니다.

사용자 정의 쿼리 필터를 추가하려면:

  1. 시스템 > **스케줄러**로 이동

  2. Index Export Job 편집

  3. 쿼리 필터를 포함하도록 작업 스크립트 수정

날짜 필터가 있는 스크립트 예:

import org.codelibs.fess.exec.IndexExportJob

def job = new IndexExportJob()
job.query = "created:>=now-7d"
job.execute()

사이트 필터가 있는 스크립트 예:

import org.codelibs.fess.exec.IndexExportJob

def job = new IndexExportJob()
job.query = "url:*example.com*"
job.execute()

내보낸 파일 구조

내보낸 파일은 원본 URL 구조를 반영하도록 구성됩니다.

예를 들어, URL이 ``https://example.com/docs/guide/intro.html``인 문서는 다음으로 내보내집니다:

/var/fess/export/
└── example.com/
    └── docs/
        └── guide/
            └── intro.html

각 내보낸 HTML 파일에는 다음이 포함됩니다:

  • 문서 제목

  • 본문 콘텐츠

  • 메타데이터(최종 수정 날짜, 콘텐츠 유형 등)

  • 원본 URL 참조

모범 사례

스토리지 고려 사항

  • 내보내기 디렉토리에 충분한 디스크 공간 확보

  • 대규모 문서 세트에 전용 스토리지 사용 고려

  • 정기 내보내기를 실행하는 경우 이전 내보내기의 정기적인 정리 구현

성능 팁

  • 문서 크기에 따라 index.export.scroll.size 조정: - 작은 문서: 큰 배치 크기(200-500) - 큰 문서: 작은 배치 크기(50-100)

  • 사용량이 적은 기간에 내보내기 예약

  • 내보내기 작업 중 디스크 I/O 모니터링

보안 권장 사항

  • 내보내기 디렉토리에 적절한 파일 권한 설정

  • 내보내기 디렉토리를 웹에 직접 노출하지 않음

  • 민감한 정보가 포함된 경우 내보낸 콘텐츠 암호화 고려

  • 내보낸 파일에 대한 액세스를 정기적으로 감사

문제 해결

내보내기 작업이 실행되지 않음

  1. 스케줄러에서 작업이 활성화되어 있는지 확인

  2. cron 표현식 구문 확인

  3. Fess 로그에서 오류 메시지 확인:

tail -f /var/log/fess/fess.log | grep IndexExport

내보내기 디렉토리가 비어 있음

  1. 인덱스에 문서가 있는지 확인

  2. 내보내기 경로 권한 확인

  3. 쿼리 필터(사용자 정의인 경우)가 문서와 일치하는지 확인

# 인덱스 문서 수 확인
curl -X GET "localhost:9201/fess.YYYYMMDD/_count?pretty"

내보내기가 중간에 실패함

  1. 사용 가능한 디스크 공간 확인

  2. 메모리 또는 시간 초과 오류에 대한 로그 검토

  3. 대용량 문서의 경우 scroll.size 감소 고려

  4. OpenSearch 스크롤 컨텍스트 시간 초과 설정 확인

파일에 액세스할 수 없음

  1. 파일 권한 확인: ls -la /var/fess/export

  2. 디렉토리 소유자가 Fess 프로세스 사용자와 일치하는지 확인

  3. SELinux 또는 AppArmor 정책이 액세스를 허용하는지 확인

관련 주제