인덱서 오류 없이 Magento 카탈로그 데이터 보강하기
많은 Magento 사용자들이 동일한 문제에 직면합니다. 속성이 누락되었거나, 설명이 빈약하거나, 번역이 되어 있지 않은 수천 개의 제품을 보유하고 있는 경우입니다.
데이터 소스를 찾는 것은 쉽습니다. 어려운 점은 스토어를 중단시키지 않고 그 데이터를 카탈로그에 입력하는 것입니다.
흔히 하는 실수는 단순한 루프를 사용하여 제품을 하나씩 저장하는 것입니다.
루프 내에서 product repository의 save 메서드를 사용하면, 모든 개별 항목에 대해 전체 라이프사이클이 트리거됩니다. 검증(validation), 옵저버(observers), 재인덱싱 트리거가 수천 번 실행됩니다. 이로 인해 스크립트 실행 시간이 몇 시간씩 걸리고 관리자 패널이 매우 느려집니다.
save 경로는 사람이 제품 하나를 편집하도록 설계되었습니다. 대량 업데이트에는 적합하지 않은 도구입니다.
카탈로그를 안전하게 업데이트하려면 다음 단계를 따르십시오:
대량 속성 업데이트(mass attribute updates)를 사용하십시오. 전체 제품 모델을 저장하는 대신
Magento\Catalog\Model\Product\Action을 사용하십시오.updateAttributes메서드를 사용하여 데이터베이스 테이블에 직접 기록하십시오. 한 번에 1,000개에서 2,000개의 ID 단위로 배치(batch) 처리를 수행하십시오.인덱서 설정을 변경하십시오. 시작하기 전에 인덱서를
Update by Schedule로 설정하십시오.Update on Save를 사용하면 모든 쓰기 작업이 동기식 재인덱싱을 트리거합니다.On a schedule모드에서는 쓰기 작업이 변경 로그(changelog)에 기록되고 크론 잡(cron job)이 작업을 처리합니다.번역을 올바르게 관리하십시오. 번역은 특정 스토어 뷰(store view)에 대한 속성 값입니다.
updateAttributes메서드에 올바른 store ID를 전달하십시오. 로컬 언어를 추가할 때 글로벌 기본값을 덮어쓰지 마십시오.AI 콘텐츠는 주의해서 다루십시오. LLM은 훌륭한 문구를 작성하지만 종종 사실을 왜곡(hallucinate)합니다. 폴리에스터 소재인 셔츠를 면이라고 말할 수도 있습니다. • AI 콘텐츠를 먼저 스테이징 필드(staging field)나 비활성화된 스코프(disabled scope)에 작성하십시오. • 실제 적용하기 전에 소량의 샘플을 검토하십시오. • 크기나 소재와 같은 기술 사양은 검증된 데이터에서 가져오십시오.
대량 데이터 보강을 위한 요약:
- 인덱서를 scheduled 모드로 설정합니다.
- 새 데이터에는 스테이징 필드를 사용합니다.
- 1,000~2,000개의 ID 단위로 배치를 적용합니다.
- 전체 제품 save 경로를 피합니다.
- 변경 사항을 재인덱싱합니다.
- 제품 페이지 샘플을 테스트합니다.
데이터 소스를 찾는 것은 쉬운 부분입니다. 운영 중인 카탈로그를 관리하려면 다른 접근 방식이 필요합니다.
출처: https://dev.to/iamrobindhiman/enriching-a-large-magento-catalog-without-melting-the-indexer-3mk9
