Skip to content

p0o0y/Elasticsearch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 

Repository files navigation

🔎 ETF Market Search Improvement

Elasticsearch를 활용한 공공 데이터 기반 ETF 검색 엔진 개선 프로젝트

1. 프로젝트 개요

본 프로젝트는 공공 ETF Open API 데이터를 Elasticsearch에 색인하여, 기존 RDB(Relational Database)의 LIKE 검색이 가진 한계를 극복하고 의미 기반의 검색 경험을 제공하기 위해 시작되었습니다. 단순한 문자열 매칭을 넘어, 사용자의 검색 의도를 파악하고 대용량 데이터를 실시간으로 분석할 수 있는 역색인(Inverted Index) 구조의 검색 엔진을 구축하는 것이 핵심입니다.



2. 주요 개선 목표

→ 다양한 검색 요소 결합: 지수명, 투자 성격, 시장, 테마를 아우르는 통합 검색

→ 언어 및 약어 혼용 지원: 한글, 영문 검색 대응

→ 사용자 의도 파악: 단순 매칭이 아닌 키워드 중심의 의미 기반 검색





3. 기존 문제점 및 해결 방안 ❌

RDB 기반 검색의 한계 키워드 누락: 상품명에 '코스피'라는 단어가 없으면 기초 지수가 코스피여도 검색되지 않음.

데이터 파편화: name, baseIndex 등 검색 대상이 여러 필드에 흩어져 있어 일관된 검색이 어려움.

동의어 처리 불가: "KOSPI", "kospi", "코스피"를 각각 별개로 인식.

복잡한 검색 로직: 필터(시장)와 검색(의미)이 섞여 쿼리가 비대해지고 성능이 저하됨.





4. Elasticsearch 기반 설계 방향

데이터의 목적에 따라 필드를 구분하여 검색 효율성을 극대화

  • 검색용 필드 name, keywords, baseIndex 상품명, 가공된 키워드, 기초지수 통합 검색

  • 필터용 필드 market, investType, theme 시장(US/KR), 투자타입(주식/채권), 테마별 필터링

  • 정렬/정보 필드 marketCap, closePrice, baseDate 시가총액, 가격, 최신 기준 정렬

  • A[OpenAPI 호출] --> B[DTO List 변환] -> C[Elasticsearch Document 변환] -> D[ES Index 저장] -> E[사용자 검색 실행]





5. 개선사항

ex ) 동의어 및 대소문자 처리 기존: "KOSPI" 검색 시 "코스피" 결과 누락 개선:"KOSPI == 코스피 == kospi" 동일 결과 노출 image



ex ) 테마 및 투자 성격 기반 검색 복합적인 검색어에 대해 의도를 분석하여 정확한 결과를 도출합니다. image

"미국 채권 ETF" "레버리지 나스닥" "AI 관련 ETF" →

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages