[Elastic Search] 매핑

2022. 11. 5. 23:43TIL💡/Elastic Stack

관계형 데이터베이스는 테이블을 만들 때 반드시 스키마 설계가 필요하다.

여기서 말하는 스키마는 테이블을 구성하는 구성 요소 간의 논리적인 관계와 정의를 의미한다.

구조를 명확히 하지 않고는 테이블이 생성되지 않고, 추후에 인덱싱 칼럼이나 조인 칼럼 등에서도 문제가 발생하기 때문이다.

 

쉽게 말하면 JSON 형태의 데이터를 루씬이 이해할 수 있도록 바꿔주는 작어빙다. 엘라스틱서치가 검색 엔진으로 전문 검색과 대용량 데이터를 빠르게 실시간 검색할 수 있는 이유는 매핑이 있기 때문인데, 매핑을 엘라스틱 서치가 자동으로 하면 다이내믹 매핑, 사용자가 직접 설정하면 명시적 매핑이다.

 

 

텍스트 데이터 타입 비교

  • text: 전문 검색이 필요한 데이터로 텍스트 분석기가 텍스트를 작은 단위로 분리
  • keyword: 정렬이나 집계에 사용되는 텍스트 데이터로 분석을 하지 않고 원문을 통째로 인덱싱

멀티 필드

멀티 필드는 단일 필드 입력에 대해 여러 하위 필드를 정의하는 기능으로, 이를 위해 fields라는 매핑 파라미터가 사용된다.

fields는 하나의 필드를 여러 용도로 사용할 수 있게 만들어준다.

 

인덱스 템플릿

인덱스 템플릿은 주로 설정이 동일한 복수의 인덱스를 만들 때 사용한다.

관리 편의성, 성능 등을 위해 인덱스를 파티셔닝하는 일이 많은데 이때 파티셔닝되는 인덱스들은 설정이 같아야 한다.

설정이 동일한 인덱스를 매번 일일이 작성하는 것은 비효율적일 뿐만 아니라 실수를 유발할 수 있다.

 

분석기

엘라스틱서치는 전문 검색을 지원하기 위해 역인덱싱을 사용한다.

전문 검색은 장문의 문자열에서 부분 검색을 수행하는 것이며, 역인덱싱은 문자열을 분석해 작은 단위로 쪼개어 인덱싱하는 기술이다.

  • 캐릭터 필터: 입력받은 문자열을 변경하거나 불필요한 문자들 제거
  • 토크나이저: 문자열을 토큰으로 분리. 분리할 때 토큰의 순서나 시작, 끝 위치도 기록
  • 토큰 필터: 분리된 토큰들의 필터 작업. 대소문자 구분, 형태소 분석 등의 작업

 

Token과 Type

앞으로 token과 term라는 단어가 많이 사용되는데 두 단어가 헷갈리기 쉽다.

간단히 토큰과 용어를 정의하고 넘어가자.

 

Cute dog라는 문자열이 분석기를 거쳐 인덱스에 저장된다고 가정해보자.

분석기는 먼저 캐릭터 필터를 통해 원문에서 불필요한 문자들을 제거한다.

이 과정까지는 문자열 자체가 분리되지 않기 때문에 그저 필터링된 문자열 정도로 볼 수 있다.

 

이후 분석기는 토크나이저를 이용해 필터링된 문자열을 자르게 되는데, 이때 잘린 단위를 Token이라고 지칭한다.

이러한 토큰들은 복수의 토큰 필터를 거치며 정제되는데, 정제 후 최종으로 역인덱스에 저장되는 상태의 토큰들을 Term라고 한다.

토큰은 분석기 내부에서 일시적으로 존재하는 상태이고, 인덱싱되어 있는 단위, 또 검색에 사용되는 단위는 모두 용어라고 할 수 있다.

 

 

'TIL💡 > Elastic Stack' 카테고리의 다른 글

[Elastic Stack] 키바나  (0) 2022.11.09
[Elastic Stack] 로그 스태시  (0) 2022.11.08
[Elastic Stack] 쿼리  (0) 2022.11.06
[Elastic Stack] 인덱스와 도큐먼트  (0) 2022.11.05
[Elastic Stack] 엘라스틱의 구성요소  (0) 2022.11.05