Programming/ElasticSearch

[ElasticSearch] text와 keyword 타입

dev? 2024. 8. 6. 15:28
반응형

공통점 

→ 둘 다 문자열을 나타내기 위한 타입니다. 

 

차이점

TEXT 타입 KEYWORD 타입
전문 검색(Full-text search)을 위한 토큰 생성 Exact Matching을 위한 토큰 생성

 

1. TEXT 타입 - 전문 검색(Full-text search) 

"I am a boy"라는 데이터가 색인되면,  "I", "am", "a", "boy"로 공백을 기준으로 데이터가 색인된다. 

→ "boy"를 입력하면 "I am a boy"가 검색 결과에 보여진다.

 

2. KEYWORD 타입 - Exact Matching

"I am a boy"라는 데이터가 색인되면,  "I am a boy" 그대로 데이터 자체로 색인된다. 

→ "boy"를 입력하면 "I am a boy"가 검색되지 않고,  "I am a boy" 색인된 데이터 그대로 입력해야만 검색이 된다. 

그래서, Keyword(Exact Matching) 타입이 Text타입( Full-text search) 보다 색인 속도가 더 빠르다.

 

3. 정리 

  KEYWORD 타입 TEXT 타입
사용 목적 통계, 정렬, 필터링 유사성 및 전문적인 분석
필드 예시 주소, 이름, 물품 상세 정보 등. 성별, 카테고리 코드 등.
검색 방식 입력된 값과 정확히 일치하는 데이터 조회 설정한 Analyzer에 따라 검색
색인 방식 입력한 데이터 그대로 색인 공백 등의 기준으로 분리하여 색인

 


 

👉 정적매핑을 사용하는 이유 중 '불필요한 색인 방지'에 대한 설명

동적 매핑
: 처음 색인되는 문서를 바탕으로 매핑 정보를 ElasticSearch가 동적(자동)으로 생성

author라는 필드가 "alden"이라는 문자열 데이터를 가지고 동적 매핑을 진행하면 

문자열 "alden"을 기본 타입인 text로 정의 후, 자동으로 keyword 타입을  정의한다. 

1개의 문자열에 대하여 2개의 필드가 생성되어 불필요한 색인이 발생하며, 색인 속도가 느려진다. 

반응형