엘라스틱 서치 운영
핵심 개념
- standard analyzer의 동작 중에 모든 문자를 소문자하는 과정이 포함 되어 있음
- analyzer로 인입되는 문자열은 내부적으로 character filter를 거친 후 tokenizer에 의해 가공되고 마지막으로 token filter를 거쳐 최종적으로 n개의 토큰이 생성됨.
- analyzer와 검색은 어떤 상관 관계가 있을까? analyzer를 통해 생성한 토큰들이 inverted index에 저장되고, 검색할 때는 이 inverted index에 저장된 값을 바탕으로 문서를 찾는다.
- scroll 옵션
- from/size와 유사해 보이지만 검색 당시의 스냅샷을 제공해 준다
- from/size를 통해 pagnation을 하는 동안에 새로운 문서가 인입되면 기존 검색 결과에 영향을 줄 수 있지만, scroll 옵션을 사용하면 새로운 문서가 인입된다고 해도 scroll id가 유지되는 동안에는 검색 결과가 바뀌지 않는다.
- scroll 옵션은 검색 결과가 동일하게 유지되어야 하는 pagnation, 혹은 대량의 배치 작업에 주로 활용
- scroll_id의 유지 기간은 노드의 힙 메모리에 영향을 주기 때문에 지나치게 길게 설정하면 Out of Memory 에러를 발생시킬 수 있음
- match 쿼리
- Query context중에서도 가장 많이 사용되는 쿼리
- match 쿼리는 검색어로 들어온 문자열을 analyzer를 통해 분석한 후 inverted index에서 해당 문자열의 토큰을 가지고 있는 문서를 검색한다.
- match가 analyzer를 통해 생성된 토큰들의 순서를 고려하지 않는 것과 달리 match_parse는 검색어의 순서도 고려함.
- multi_match는 match와 동일하지만 두 개 이상의 필드에 match 쿼리를 날릴 수 있다.
- query_string은 and와 or 같은 검색어 간 연산이 필요한 경우에 사용
- term 쿼리는 정확하게 이리되는 단어를 찾을 때 사용
- text 타입의 필드를 대상으로 할때는 term 쿼리보다 match 쿼리를 사용하는 것이 일반적이다
- wildCard 쿼리는 특수문자를 이용한 일종의 Full-Scan 검색이 가능한 쿼리이다. 이 쿼리도 text 필드가 아닌 keyword 타입의 쿼리를 사용해야 함
- 대소문자를 정확하게 구분할 수 있다면 match 쿼리가 아닌 term 커리를 사용해도 된다
- query 문은 크게 query context와 filter context가 있다. query context는 각 문서가 검색어와 얼마나 연관이 있는지 _score를 통해 순위를 매기고, filter context는 각 문서에 검색어가 포함되어 있는지 여부만 계산
Reference URL
'Engineering WIKI > Book' 카테고리의 다른 글
기초부터 다지는 엘라스틱서치 운영 (12장) / ElasticSearch 클러스터 구축 시나리오 (46) | 2024.04.19 |
---|---|
기초부터 다지는 엘라스틱서치 운영 (11장) / 검색 성능 최적화 (38) | 2024.04.18 |
기초부터 다지는 엘라스틱서치 운영 (10장) / 색인 성능 최적화 (64) | 2024.04.17 |
기초부터 다지는 엘라스틱서치 운영 (8장) / 분석 엔진으로 활용하기 (70) | 2024.04.15 |
기초부터 다지는 엘라스틱서치 운영 (7장) / 클러스터 성능 모니터링과 최적화 (54) | 2024.04.14 |
기초부터 다지는 엘라스틱서치 운영 (6장) / ElasticSearch 클러스터 운영하기 (33) | 2024.04.06 |
기초부터 다지는 엘라스틱서치 운영 (5장) / ElasticSearch 클러스터 구축 (36) | 2024.03.28 |
기초부터 다지는 엘라스틱서치 운영 (3 ~ 4장) / 모니터링 및 기본개념 (112) | 2023.09.29 |