본문 바로가기
Elasticsearch/이론

[ElasticSearch_이론] 검색기능

by suychoi 2022. 3. 6.

ES 와 검색

ES 는 자바와 루씬 기반의 오픈소스(OSS)  검색 엔진인데, 

빠른 검색을 위해 ES에 있는 개념은 크게 두가지다

  • 데이터 색인
    • 인덱싱을 통한 역인덱스 구성
    • Analyzer 를 이용한 텍스트 분석
  • 검색과 질의(query)

데이터 색인

검색기술에서 색인은 크게 동사(indexing)와 명사(index)로 사용된다.

  • 동사의 indexing : 데이터가 검색이 될 수 있는 구조로 변경하기 위해 원본 문서를 검색어 토큰들로
    변환해서 저장하는 과정을 말한다.
  • 명사의 index : indexing 과정을 거친 결과물 혹은 색인된 데이터가 저장되는 곳이다. 
    ES 에서는 document 들의 논리적인 집합을 표현하는 단위를 의미한다. 

인덱싱

인덱싱은 ES에 데이터를 저장하는 과정에서 발생한다. 

RDB 에서는 검색을 할 때 해당 단어가 row에 존재하는지를 하나하나 확인한다. 그래서 데이터가 늘어날수록 검색시간이 오래걸린다. 

반면, ES는 NoSQL 구조로 데이터를 저장할 때 역인덱스 (inverted index) 구조를 만들어서 저장한다. 

 

역인덱스

역인덱스는 텍스트 분석과정을 통해 분류된 키워드(=term)가 어떤 document 들에 속해있는지를 저장하는 방식이다. 

역인덱스에서는 데이터가 늘어나도 키워드가 속해있는 document의 id값만 늘어나기 때문에 검색을 빠르게 할 수 있다. 

 

텍스트 분석과정

ES에 저장되는 document는 모든 문자열(=term) 필드 별로 역인덱스를 생성한다. 

역인덱스 구조 예시

term이 불필요하게 생성되는 것을 방지하기 위해 ES는 Analyzer를 통해서 텍스트 분석과정을 거친다.

 

Analyzer

필터    
캐릭터 필터 0~3 개 전체문장에서 특정 문자를 대치하거나 제거하는 기능
토크나이저 1개 문장에 속한 단어들을 term 단위로 하나씩 분리해 내는 처리기능
(ex whitespace ... )
토큰 필터 n개 분리된 term 들을 하나씩 가공하는 기능
(ex lowercase ... )

토큰필터 예시
  • 불용어(stopword)[stop] : term 중에서 검색어로서의 가치가 없는 단어, (ex. a, an, are, at, be, the, no ...)
  • 형태소 분석[snowball] : ~s, ~ing 등을 제거하고, ~iness 등을 ~y 로 변경한다. 
  • 동의어[synonym] : quick 과 fast 등 동의어를 지정해서 같이 검색이 될 수 있도록 할 수 있다. 

 

Analyzer 구조

 


ES 검색 관련 용어

  • 검색(search, retrieval): 인덱스에 들어있는 검색어 토큰들을 포함하고 있는 문서를 찾아가는 과정
  • 질의(query): 사용자가 원하는 문서를 찾거나 집계결과를 출력하기 위해 검색시 입력하는 검색어 또는 검색 조건
  • Full Text Search : 검색 시 대소문자, 단수나 복수, 원형 여부와 관계없이 넓은범위를 검색할 수 있는 ES의 특징
  • Query DSL(Domain Specific Language) : ES에서 제공하는 json 형식의 쿼리 기능

 

 


참고

링크1 링크2 링크3

 

'Elasticsearch > 이론' 카테고리의 다른 글

[ElasticSearch_이론] 데이터 CRUD  (0) 2022.03.02
[ElasticSearch_이론] 순서  (0) 2022.03.02