데브허브 | DEVHUB | Elasticsearch 입문·실전 - 3.9. [실습] 검색할 때 필요없는 HTML 태그 제거하기 (html_strip)Elasticsearch 입문·실전 - 3.9. [실습] 검색할 때 필요없는 HTML 태그 제거하기 (html_strip)
- 게시글 서비스 등에서 HTML 태그가 포함된 콘텐츠를 엘라스틱 서치에 저장 시, 불필요한 태그가 검색 결과에 노출되어 검색 품질을 저하시키고 역인덱스 공간을 낭비하는 문제가 발생합니다. 📉
- 이 문제를 해결하기 위해 엘라스틱 서치의 커스텀 애널라이저에
html_strip 캐릭터 필터를 적용하여 HTML 태그를 제거할 수 있습니다. 🛠️
html_strip 필터는 텍스트가 토크나이저에 전달되기 전에 HTML 태그를 미리 제거하여, 실제 콘텐츠 내용만으로 토큰을 생성하게 합니다. 🧹
- 인덱스 생성 시
settings의 analysis 섹션에서 char_filter에 html_strip을 추가하고, analyzer 정의 시 해당 캐릭터 필터를 사용하도록 설정하여 구현합니다. ⚙️
html_strip 적용 후에는 HTML 태그(예: H1)로 검색해도 관련 없는 문서가 조회되지 않아 검색 정확도와 사용자 경험이 향상됩니다. 🎯
- 또한, 불필요한 HTML 태그 토큰이 역인덱스에 저장되지 않으므로, 인덱스 크기가 줄어들어 저장 공간을 효율적으로 사용할 수 있습니다. 💾
_analyze API를 사용하여 html_strip 적용 전후의 토큰 분석 결과를 비교함으로써, HTML 태그가 성공적으로 제거되었음을 확인할 수 있습니다. 🔬
- 따라서 HTML 태그가 포함된 데이터를 엘라스틱 서치에 색인할 때는
html_strip 캐릭터 필터 적용을 적극적으로 고려하는 것이 좋습니다. ✅