본문 바로가기
기술/ElasticSearch

[Udemy][Elasticsearch 8과 Elastic Stack : 이론과 실습] 섹션 3: Elasticsearch를 사용한 검색

by 오오오오니 2025. 3. 18.
 
 
 
 
 
 
 
아이콘 추가
커버 추가
레이아웃 사용자 지정

섹션 3: Elasticsearch를 사용한 검색

 
2025년 2월 25일 오전 10:16
댓글
 
 
 
 
 

퍼지 쿼리

 
 
오타 처리하는 방법
 
 
 
퍼지 매치 기술 활용
 
 
 
편집 알고리즘 사용
 
 
 
Levenshtein 편집 거리 개념, 허용값 설정 가능
 
 

부분 매치

 
 
와일드 카드 활용
 
 

증분 매치 (자동 완성)

 
 
쿼리 타임 증분 검색 방식
 
 
가장 성능이 좋거나 최선의 방식은 아님
 
 
 
"Query-Time Search-As You-Type"의 단점: 색인 기반 솔루션에 비해 리소스 많이 사용됨
 
 
 
구글처럼 대규모로 사용할 예정이면 인덱스-시간 솔루션이 꼭 필요함
 
 
 
N-그램 개념
 
 
Search As You Type: 입력값을 N-그램으로 취급
 
 
 
색인에 매치해 어떤 용어와 일치하는지 확인 가능
 
 
 
Edge NGram 활용
 
 
 
인덱스/쿼리 분석기 분리
 
 
쿼리 측에서는 표준 분석기 지정, 인덱스 측에서는 자동완성 분석기만 사용
 
 
 
이유:
 
 
일반 검색: 정확한 결과 매칭을 위해 완전한 단어 토큰화 필요. 표준 분석기는 텍스트를 의미 있는 단어로 토큰화하고 불용어 제거 등의 처리 수행
 
 
 
자동완성: 사용자가 입력 중인 단어의 일부만으로도 결과 제공 필요. 접두사 매칭이나 n-gram 기반 토큰화 사용
 
 
 
토큰화 방식 차이 예시:
 
복사
캡션
 
"Quick brown fox"라는 텍스트가 있을 때: 표준 분석기: ["quick", "brown", "fox"] 자동완성 분석기: ["q", "qu", "qui", "quic", "quick", "b", "br", "bro", "brow", "brown", ...]
 
 
 
문제 해결책
 
 
같은 필드에 두 기능을 모두 적용하면, 하나의 분석기만 사용할 경우 둘 중 하나의 기능이 최적화되지 않음
 
 
 
Elasticsearch의 특성을 활용해 인덱싱 시와 검색 시 서로 다른 분석기 사용
 
 
 
analyzersearch_analyzer를 분리하여 설정함으로써 각 사용 케이스에 최적화된 토큰화 전략 적용
 
 
 
NGram을 구축하기 위해 인덱스 측에서 별도의 분석기 사용해야 하는 방식
 
 
 
주의사항
 
 
증분 검색 자동완성에 필요한 속도로 빈번한 텍스트 쿼리를 실행하는 자동완성 기능은 대규모 시스템에 과부하를 줄 수 있음
 
 
 
선언된 각 증분 검색 필드마다 추가로 세 개의 하위 필드가 생성됨
 
 

도구

 
 
JQ 명령줄 도구
 
 
sudo apt-get install jq 명령으로 설치
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
저작자표시

'기술 > ElasticSearch' 카테고리의 다른 글

[Udemy][Elasticsearch 8과 Elastic Stack : 이론과 실습] 섹션 4: 크고 작은 데이터를 색인으로 가져오기  (0) 2025.03.18
[Udemy][Elasticsearch 8과 Elastic Stack : 이론과 실습] 섹션 2: 데이터 매핑 및 색인화  (0) 2025.03.18