개요
인덱스 내보내기 기능을 사용하면 OpenSearch에 색인된 검색 문서를 로컬 파일 시스템의 HTML 파일로 내보낼 수 있습니다. 이 기능은 다음과 같은 용도에 유용합니다:
색인된 콘텐츠의 정적 백업 생성
아카이브 목적의 문서 오프라인 복사본 생성
정적 검색 결과 페이지 구축
다른 시스템으로 콘텐츠 마이그레이션
내보낸 파일은 소스 문서의 원본 URL 경로 구조를 유지하므로 내보낸 콘텐츠를 쉽게 탐색하고 관리할 수 있습니다.
작동 방식
인덱스 내보내기 작업이 실행되면 다음 프로세스가 수행됩니다:
문서 쿼리: 효율적인 일괄 처리를 위해 스크롤 API를 사용하여 OpenSearch에서 문서 검색
콘텐츠 처리: 문서 필드(제목, 콘텐츠, URL 등) 추출
디렉토리 구조 생성: 내보내기 디렉토리에 URL 경로 구조 복제
HTML 파일 생성: 문서 콘텐츠를 포함하는 HTML 파일 생성
완료될 때까지 계속: 인덱스가 완전히 내보내질 때까지 일괄 처리로 모든 문서 처리
스크롤 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
작업 활성화
인덱스 내보내기 작업은 예약된 작업으로 등록되어 있지만 기본적으로 비활성화되어 있습니다.
작업을 활성화하려면:
Fess 관리 콘솔에 로그인
시스템 > **스케줄러**로 이동
작업 목록에서 Index Export Job 찾기
클릭하여 작업 설정 편집
cron 표현식을 사용하여 일정 설정
설정 저장
cron 표현식 예:
0 0 2 * * ?- 매일 오전 2시에 실행0 0 3 ? * SUN- 매주 일요일 오전 3시에 실행0 0 0 1 * ?- 매월 1일 자정에 실행
사용자 정의 쿼리 필터링
작업 스크립트를 수정하여 특정 문서만 내보내도록 내보내기 작업을 사용자 정의할 수 있습니다.
사용자 정의 쿼리 필터를 추가하려면:
시스템 > **스케줄러**로 이동
Index Export Job 편집
쿼리 필터를 포함하도록 작업 스크립트 수정
날짜 필터가 있는 스크립트 예:
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 모니터링
보안 권장 사항
내보내기 디렉토리에 적절한 파일 권한 설정
내보내기 디렉토리를 웹에 직접 노출하지 않음
민감한 정보가 포함된 경우 내보낸 콘텐츠 암호화 고려
내보낸 파일에 대한 액세스를 정기적으로 감사
문제 해결
내보내기 작업이 실행되지 않음
스케줄러에서 작업이 활성화되어 있는지 확인
cron 표현식 구문 확인
Fess 로그에서 오류 메시지 확인:
tail -f /var/log/fess/fess.log | grep IndexExport
내보내기 디렉토리가 비어 있음
인덱스에 문서가 있는지 확인
내보내기 경로 권한 확인
쿼리 필터(사용자 정의인 경우)가 문서와 일치하는지 확인
# 인덱스 문서 수 확인
curl -X GET "localhost:9201/fess.YYYYMMDD/_count?pretty"
내보내기가 중간에 실패함
사용 가능한 디스크 공간 확인
메모리 또는 시간 초과 오류에 대한 로그 검토
대용량 문서의 경우
scroll.size감소 고려OpenSearch 스크롤 컨텍스트 시간 초과 설정 확인
파일에 액세스할 수 없음
파일 권한 확인:
ls -la /var/fess/export디렉토리 소유자가 Fess 프로세스 사용자와 일치하는지 확인
SELinux 또는 AppArmor 정책이 액세스를 허용하는지 확인