[ElasticSearch] mapping, type, analyzer

Woong·2022년 8월 9일
0

ElasticSearch

목록 보기
2/21

mapping

  • JSON 형태 Document 의 데이터 스키마 정의

    • 명시적 매핑 : 인덱스 매핑을 직접 정의
    • 다이나믹 매핑 : 명시하지 않은 필드에 대해 자동 추론, 매핑
      • long 사용으로 인한 불필요한 메모리 사용이나, 문자열 검색/정렬 고려를 위해 명시적 매핑 권장
    • ※ 필드 추가는 가능하나, 한번 정의된 필드는 수정, 삭제 불가
  • input 에 따라 다이나믹 매핑으로 매핑되는 필드

Mapping 정보 조회

GET <index/_mapping>

명시적 매핑

  • Index 생성시 mapping 지정
  • PUT <index>
{ “mappings” : {
   properties”: {
          “<필드명>” : “<타입>”, 
      …

매핑 조회

  • GET <index>/_mapping

타입

문자열 타입

  • 문자열은 text, keyword 두 가지 타입

문자열 타입 - text

  • Text : (일반적으로) 문장을 저장하는 매핑 타입
    • 문장, 여러 단어 나열 등
    • 분석기로 토큰으로 분리되어 인덱싱
    • 역인덱싱 inverted indexing : 토큰(term) 인덱싱

  • 예제) text_index 생성
    • contents 필드 타입이 text
    • 토큰화되어 역인덱싱

문자열 match

  • 역인덱싱된 term 중에서 일치하는 Document 검색
    • 토큰화되어 역인덱싱

문자열 타입 – keyword

  • 범주형 데이터 : 규칙성 or 유의미한 값들의 집합
    • 문자열 전체가 하나의 용어로 인덱싱
    • 분석기를 거치지 않음
    • 부분 일치 검색 X, 일치하는 검색 O
    • 집계, 정렬에 유용

멀티 필드

  • 단일 필드에 여러 하위 필드를 정의

    • fields 매핑 파라미터 사용
  • 예시의 경우 contents.keyword 하위 필드는

    • keyword 타입이므로 완전 검색

분석기 (analyzer)

  • character filter, tokenizer, token filter 로 구성

  • Character Filter

    • 입력받은 문자열 변경 or 불필요 문자 제거
  • tokenizer

    • 토큰으로 분리
    • 토큰의 순서, 시작, 끝 위치 기록
  • tokenfilter

    • 토큰의 필터 작업
    • 대소문자 구문, 형태소 분석 등

자주 사용되는 분석기

  • Standard
    • 기본 분석기
    • Standard tokenizer, 소문자 변경 필터, stop 필터 포함
  • Simple
    • 문자만 토큰화
    • 공백, 숫자, -, ‘ 등은 무시
  • Writespace
    • 공백으로 구분하여 토큰화
  • Stop
    • 불용어 제거

Character filter

  • 토큰화 이전 문자 전처리
    • Ex) HTML 문법 제거/변경
    • Ex) 특정 문자를 다른 문자로 대체
  • 대부분 분석기에는 캐릭터 필터가 없음
    • 커스텀 분석기를 만드는 것이 권장

tokenizer

문자열을 분리하여 토큰화

  • Standard
    • Standard 분석기의 토크나이저
    • 쉼표, 점 등 기호 제거 후 text 토큰화
  • Lowercase
    • 소문자로 변경 후 토큰화
  • Ngram
    • N개의 글자 단위로 토큰화
    • 저장공간 많이 차지
  • Uax_url_mail
    • URL, email 토큰화 특화

token filter

  • 토큰화된 문자열에 필터링

    • 토큰 변경/삭제/추가
    • Ex) lowercase, stemmer(문법 분석), stop (특정 단어 제거)
  • 분석기는 1개의 토크나이저 + 여러 필터로 구성

    • 필터는 없거나, 여러 필터 조합 가능
    • 대부분 분석기들은 하나 이상의 필터 포함
    • 토크나이저 없이 단독으로는 사용 불가
    • 예시) standard 토크나이저 + uppercase 필터

커스텀 분석기 예제

  • My_analyzer 커스텀 분석기를 적용한 customer_analyzer 인덱스
  • Standard 토크나이저 + Lowercase, stop 커스텀 필터 적용
  • “Lions” 를 제거하는 stop 커스텀 필터

reference

  • 서적 '엘라스틱 스택 개발부터 운영까지'

0개의 댓글