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 ... ) 토큰필터 예시
|
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 |