본문 바로가기
Engineering WIKI/Book

기초부터 다지는 엘라스틱서치 운영 (9장) / 검색 엔진으로 활용하기

by wonos 2024. 4. 16.

엘라스틱 서치 운영

 

핵심 개념

  • 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